📄 arrowobj.java
字号:
package connex.plugins.whiteboard;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Color;
import desl.graphic.geom.Arrow2D;
import java.awt.RenderingHints;
import java.awt.BasicStroke;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class ArrowObj
extends ShapeObj {
public void setGraphic(Graphics2D g2D) {
super.setGraphic(g2D);
lastS= new Point();
lastE= new Point();
}
public void draw() {
if (start == null || end == null) {
return;
}
draw(start, end);
}
public void draw(Point start, Point end) {
this.start = start;
this.end = end;
g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
if (select != 0) {
drawSelection(true, lastS, lastE);
drawSelection(false, start, end);
}
else {
Arrow2D ar = new Arrow2D(start, end);
g2D.setColor(drawColor);
g2D.draw(ar.tail);
g2D.fill(ar.head);
g2D.fill(ar.head2);
}
lastS = new Point(start);
lastE = new Point(end);
}
/**
*
* @param xor boolean
* @param pt1 Point
* @param pt2 Point
*/
protected void drawSelection(boolean xor, Point pt1, Point pt2) {
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);
if (pt1.x != 0 && pt1.y != 0 ) {
Arrow2D ar = new Arrow2D(pt1, pt2);
g2D.setStroke(dashed);
g2D.setColor(Color.MAGENTA);
if (xor) {
if (!lastE.equals(end) || !lastS.equals(start)) {
g2D.setXORMode(Color.white);
}
}
g2D.fill(ar.head);
g2D.draw(ar.tail);
g2D.fill(ar.head2);
g2D.fillRect(pt1.x - 2, pt1.y - 2, 5, 5);
g2D.fillRect(pt2.x - 2, pt2.y - 2, 5, 5);
}
g2D.setStroke(stroke);
}
/**
*
* @param pt Point
* @return boolean
*/
public boolean SelectShape(Point pt) {
if (start == null) {
return false;
}
double px = pt.x;
double py = pt.y;
if (Math.abs(px - start.x) < 5 && Math.abs(py - start.y) < 5) {
this.select = 1;
return true;
}
if (Math.abs(px - end.x) < 5 && Math.abs(py - end.y) < 5) {
select = 2;
return true;
}
if (new Arrow2D(start, end).contains(pt)) {
select = 3;
return true;
}
return false;
}
public void move(Point pt, Point pt2) {
int tmpx = pt.x - pt2.x;
int tmpy = pt.y - pt2.y;
if (select == 1) {
drawSelection(true, start, end);
start.setLocation(pt);
drawSelection(false, start, end);
}
if (select == 2) {
drawSelection(true, start, end);
end.setLocation(pt);
drawSelection(false, start, end);
}
if (select == 3) {
drawSelection(true, start, end);
start.setLocation(start.x + tmpx, start.y + tmpy);
end.setLocation(end.x + tmpx, end.y + tmpy);
drawSelection(false, start, end);
}
}
public void fill(Color fillColor) {
this.drawColor = fillColor;
draw();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -