Получение координатных пар объекта Path2D в Java?
Я должен получить координаты каждого набора координат в объекте Path2D, но я не знаю как. Ранее мы использовали полигоны, поэтому я смог инициализировать два массива длины Polygon.npoints
а затем установите их, чтобы быть Polygon.xpoints
а также Polygon.ypoints
массивы. Теперь, когда мы используем объекты Path2D, я понятия не имею, как это сделать, потому что все, что я могу сделать, это инициализировать PathIterator, который принимает массив в качестве входных данных и возвращает сегменты? Может кто-нибудь объяснить, как получить все пары координат объекта Path2D?
1 ответ
Ниже приведен пример того, как вы можете получить все сегменты и пары координат PathIterator
:
Вы называете PathIterator
"s 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);