我必须在 Path2D 对象中获取每组坐标的坐标,但我不知道如何。以前我们使用多边形,所以我能够初始化两个长度数组,Polygon.npoints
然后将它们设置为Polygon.xpoints
和Polygon.ypoints
数组。现在我们使用的是 Path2D 对象,我不知道该怎么做,因为我似乎只能初始化一个 PathIterator,它接受一个数组作为输入并返回段?有人可以解释如何获取 Path2D 对象的所有坐标对吗?
问问题
691 次
1 回答
2
下面是一个如何获取 a 的所有段和坐标对的示例
PathIterator
:
您反复调用PathIterator
'方法。currentSegment
在每次通话中,您都会获得一段的坐标。请特别注意,坐标的数量取决于段类型(您从该currentSegment
方法获得的返回值)。
public static void dump(Shape shape) {
float[] coords = new float[6];
PathIterator pathIterator = shape.getPathIterator(new AffineTransform());
while (!pathIterator.isDone()) {
switch (pathIterator.currentSegment(coords)) {
case PathIterator.SEG_MOVETO:
System.out.printf("move to x1=%f, y1=%f\n",
coords[0], coords[1]);
break;
case PathIterator.SEG_LINETO:
System.out.printf("line to x1=%f, y1=%f\n",
coords[0], coords[1]);
break;
case PathIterator.SEG_QUADTO:
System.out.printf("quad to x1=%f, y1=%f, x2=%f, y2=%f\n",
coords[0], coords[1], coords[2], coords[3]);
break;
case PathIterator.SEG_CUBICTO:
System.out.printf("cubic to x1=%f, y1=%f, x2=%f, y2=%f, x3=%f, y3=%f\n",
coords[0], coords[1], coords[2], coords[3], coords[4], coords[5]);
break;
case PathIterator.SEG_CLOSE:
System.out.printf("close\n");
break;
}
pathIterator.next();
}
}
您可以使用此方法转储任何内容Shape
(因此也可以用于其实现,如Rectangle
, Polygon
, Ellipse2D
, Path2D
, ...)
Shape shape = ...;
dump(shape);
于 2017-12-09T13:24:04.670 回答