我正在使用 Java 的 Graphics2D 库来绘制各种形状,并用线条将它们连接在一起。其中一些行的末尾需要一个箭头。形状可以在任何位置,因此箭头的角度会改变。
到目前为止,我的代码绘制箭头并旋转它,但它从来没有处于正确的角度或正确的位置。当我在屏幕上移动我的形状时,箭头似乎围绕它要指向的形状运行。(坐标 x2,y2)
private static void drawArrow(Graphics2D g, int size, int x1, int y1, int x2, int y2) {
double dx = x2 - x1, dy = y2 - y1;
double theta = Math.atan2(dy, dx);
AffineTransform at = AffineTransform.getTranslateInstance(x2, y2);
Polygon p = new Polygon();
p.addPoint(0, 0);
p.addPoint(size, 0 - size);
p.addPoint(0 - size, 0 - size);
at.rotate(theta, x2, y2);
java.awt.Shape shape = at.createTransformedShape(p);
g.fill(shape);
}
int size - 箭头除以 2 的大小。
int x1, y1 - 第一个形状 x 和 y 坐标。(形状中心)
int y2, x2 - 第二个形状 x 和 y 坐标。(形状中心)
你可以在这些图片中看到我的意思:
我有一种感觉,我快要做到这一点了,因为它似乎完美地围绕形状运行,这表明它只是没有以正确的角度或点旋转。