?? textobj.java
字號:
package connex.plugins.whiteboard;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Color;
import java.awt.RenderingHints;
import desl.graphic.geom.Arrow2D;
import java.awt.font.TextLayout;
import java.awt.Font;
import java.awt.font.FontRenderContext;
import javax.swing.JFrame;
import java.awt.Rectangle;
import java.awt.BasicStroke;
import java.awt.Paint;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class TextObj
extends ShapeObj {
private String txt;
private Font font;
private int w, h;
/**
* @directed*/
private transient TextDialog td;
public void setGraphic(Graphics2D g2D) {
super.setGraphic(g2D);
lastS= new Point();
lastE= new Point();
}
public TextObj() {
}
public void draw() {
if (start == null) {
return;
}
if (select != 0) {
this.drawSelection();
}
else {
g2D.setColor(drawColor);
TextLayout t = new TextLayout(txt, font, new FontRenderContext(null, false, false));
t.draw(g2D, (float) start.x, (float) start.y);
w = (int) t.getBounds().getWidth();
h = (int) t.getBounds().getHeight();
}
lastS = new Point(start); //.setLocation(this.start);
}
public void draw(Point start, Point end) {
this.start = start;
g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
if (td == null) {
td = new TextDialog(null, "Text", start);
td.setLocation(start.x, start.y);
td.setVisible(true);
}
if (td.getText().equals("")) {
return;
}
this.font = td.getFont();
this.txt = td.getText();
draw();
}
protected void drawSelection() {
BasicStroke stroke = new BasicStroke(1.0f);
float dash1[] = {
2.0f};
BasicStroke dashed = new BasicStroke(1.0f,
BasicStroke.CAP_BUTT,
BasicStroke.JOIN_MITER,
10.0f, dash1, 0.0f);
g2D.setStroke(dashed);
/*remove Shadow*/
if (lastS.x!=0&&lastS.y!=0) {
System.out.println(lastS.equals(start));
moveText(lastS, true);
}
moveText(start, false);
g2D.setStroke(stroke);
}
private void moveText(Point pt, boolean xor) {
TextLayout t;
g2D.setColor(Color.gray);
if (xor) {
g2D.setXORMode(Color.white);
}
g2D.drawRect(pt.x - 2, pt.y - h - (h / 4), w + 6, h + (h / 2));
t = new TextLayout(txt, font, new FontRenderContext(null, false, false));
t.draw(g2D, (float) pt.x, (float) pt.y);
}
public void fill(Color fillColor) {
drawColor = fillColor;
g2D.setColor(fillColor);
draw();
}
public boolean SelectShape(Point pt) {
Rectangle r = new Rectangle(start.x, start.y - h + 1, w, h);
if (r.contains(pt)) {
select = 1;
r = null;
return true;
}
return false;
}
public void move(Point pt, Point pt2) {
int tmpx = pt.x - pt2.x;
int tmpy = pt.y - pt2.y;
start.x += tmpx;
start.y += tmpy;
draw();
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -