我没有看到任何“好”的方法,但这是我得到的。应用旋转后,您可以使用PathIterator
对象来获取线条的结果。从那里您可以遍历 内部的坐标PathIterator
并获取您的 x 和 y 坐标。
如果您有兴趣遍历 java 中的行/路径上的每个点,这里有一个 awnser,它有一种更简洁的方式来获取坐标
此外,如果您打算在任何类型的图形中使用它,我不建议在您的绘画方法中执行此过程。
double startX = 100;
double startY = 100;
double endX = 500;
double endY = 500;
AffineTransform rotation = new AffineTransform();
double angle = Math.toRadians(90);
rotation.rotate(angle, 200, 200);
Line2D.Double line = new Line2D.Double(startX, startY, endX, endY);
PathIterator it = line.getPathIterator(rotation);
while(!it.isDone()) {
double [] values = new double[6];
it.currentSegment(values);
System.out.println("["+values[0] + ", " + values[1] + "]");
it.next();
}
我还注意到一些关于使用路径而不是初始行的评论。我同意每当您需要为“形状”应用变换时都应该使用路径,因为它们内置了处理它的方法。这是使用路径而不是 Line2D 的示例
double startX = 100;
double startY = 100;
double endX = 500;
double endY = 500;
AffineTransform rotation = new AffineTransform();
double angle = Math.toRadians(90);
rotation.rotate(angle, 200, 200);
Path2D path = new Path2D.Double();
path.moveTo(startX, startY);
path.lineTo(endX, endY);
path.transform(rotation);
double [] values = new double[6];
for(PathIterator it = path.getPathIterator(null); !it.isDone();) {
it.currentSegment(values);
System.out.println("["+values[0] + ", " + values[1] + "]");
it.next();
}