📄 arrow.java
字号:
class Arrow // 箭头类
{
void draw(Graphics2D g2d)
{
g2d.setPaint(new Color(R, G, B));
g2d.setStroke(new BasicStroke(stroke, BasicStroke.CAP_ROUND,
BasicStroke.JOIN_BEVEL));
// 利用向量来进行计算
int len = 10; // 箭头的边长
int x0 = 0, y0 = 0;
double dx = x2 - x0, dy = y2 - y0;
//共线 模长为len
//0 = (x2 -x1)*dy - dx*(y2 -y1); dx*dx + dy*dy = len*len
double mAB = (x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1);
dx = (x2 -x1)*len / java.lang.Math.sqrt(mAB) ;
dy = (y2 -y1)*len / java.lang.Math.sqrt(mAB) ;
x0 = (int) (x2 - dx);
y0 = (int) (y2 - dy);
int x3 = 0, y3 = 0, x4, y4;
dx = x3 - x0;
dy = y3 - y0;
double mCB = (x2 - x0)*(x2 - x0) + (y2 - y0)*(y2 - y0);
dx = -(y2 -y0)*len / java.lang.Math.sqrt(mCB) ;
dy = (x2 -x0)*len / java.lang.Math.sqrt(mCB) ;
x3 = (int) (dx + x0);
y3 = (int) (dy + y0);
x4 = 2*x0 - x3;
y4 = 2*y0 - y3;
g2d.drawLine(x1, y1, x0, y0);
g2d.setPaint(new Color(255, 0, 0));
Polygon p = new Polygon();
p.addPoint(x2, y2);
p.addPoint(x3, y3);
p.addPoint(x4, y4);
g2d.drawPolygon(p);
g2d.fillPolygon(p);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -