Класс Path2D
- Все реализуемые интерфейсы:
-
Shape,Cloneable
- Непосредственные известные подклассы:
-
Path2D.Double,Path2D.Float
public abstract sealed class Path2D extends Object implements Shape, Cloneable permits Path2D.Double, Path2D.Float
Path2D предоставляет простую, но гибкую форму, представляющую произвольную геометрическую траекторию. Он может полностью представить любую траекторию, которую можно проитерировать с помощью интерфейса PathIterator, включая все типы её сегментов и правила обхода, и реализует все основные методы проверки попадания точки внутрь области Shape. Используйте Path2D.Float при работе с данными, которые могут быть представлены и использованы с плавающей точкой. Используйте Path2D.Double для данных, требующих точности или диапазона двойной точности.
Path2D предоставляет именно те возможности, которые необходимы для базового построения и управления геометрической траекторией и реализации вышеуказанных интерфейсов с минимальным добавлением интерпретации. Если полезно манипулировать внутренними областями замкнутых геометрических фигур, выходя за рамки простой проверки попадания точки внутрь, то класс Area предоставляет дополнительные возможности, специально ориентированные на замкнутые фигуры. Хотя оба класса номинально реализуют интерфейс Shape, они различаются по назначению, и вместе они предоставляют два полезных представления геометрической фигуры, где Path2D в основном занимается траекторией, образованной сегментами пути, а Area больше занимается интерпретацией и манипулированием замкнутыми областями 2D геометрического пространства.
Интерфейс PathIterator содержит более подробные описания типов сегментов, составляющих траекторию, и правил обхода, которые управляют определением областей внутри или снаружи траектории.
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
Path2D.Double |
Класс Double определяет геометрическую траекторию с координатами, хранящимися в формате с плавающей запятой двойной точности. |
static class |
Path2D.Float |
Класс Float определяет геометрическую траекторию с координатами, хранящимися в формате с плавающей запятой одинарной точности. |
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final int |
WIND_EVEN_ODD |
Правило обхода четность-нечетность для определения внутренней части траектории. |
static final int |
WIND_NON_ZERO |
Правило обхода не равное нулю для определения внутренней части траектории. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract void |
append |
Добавляет геометрию указанного объекта PathIterator к траектории, возможно, соединяя новую геометрию с существующими сегментами траектории отрезком прямой. |
final void |
append |
Добавляет геометрию указанного объекта Shape к траектории, возможно, соединяя новую геометрию с существующими сегментами траектории отрезком прямой. |
abstract Object |
clone() |
Создает новый объект того же класса, что и этот объект. |
final void |
closePath() |
Закрывает текущий подпуть, нарисовав прямую линию обратно к координатам последнего moveTo. |
final boolean |
contains |
Проверяет, находятся ли указанные координаты внутри границы Shape, как описано в определении принадлежности. |
final boolean |
contains |
Проверяет, полностью ли внутренняя часть Shape содержит указанную прямоугольную область. |
static boolean |
contains |
Проверяет, находятся ли указанные координаты внутри замкнутой границы указанного PathIterator. |
static boolean |
contains |
Проверяет, полностью ли указанная прямоугольная область находится внутри замкнутой границы указанного PathIterator. |
static boolean |
contains |
Проверяет, находится ли указанный Point2D внутри замкнутой границы указанного PathIterator. |
static boolean |
contains |
Проверяет, полностью ли указанный Rectangle2D находится внутри замкнутой границы указанного PathIterator. |
final boolean |
contains |
Проверяет, находится ли указанная Point2D внутри границы Shape, как описано в определении принадлежности. |
final boolean |
contains |
Проверяет, полностью ли внутренняя часть Shape содержит указанную Rectangle2D. |
final Shape |
createTransformedShape |
Возвращает новый Shape, представляющий преобразованную версию этого Path2D. |
abstract void |
curveTo |
Добавляет криволинейный сегмент, определяемый тремя новыми точками, к траектории, нарисовав кривую Безье, которая пересекает как текущие координаты, так и указанные координаты (x3,y3), используя указанные точки (x1,y1) и (x2,y2) в качестве контрольных точек Безье. |
final Rectangle |
getBounds() |
Возвращает целое число Rectangle, полностью охватывающий Shape. |
final Point2D |
getCurrentPoint() |
Возвращает координаты, добавленные последними в конец траектории, как объект Point2D. |
final PathIterator |
getPathIterator |
Возвращает объект итератора, который перебирает границу Shape и предоставляет доступ к сглаженному представлению геометрии контура Shape. |
final int |
getWindingRule() |
Возвращает правило обхода заливки. |
final boolean |
intersects |
Проверяет, пересекается ли внутренняя часть Shape с внутренней частью указанной прямоугольной области. |
static boolean |
intersects |
Проверяет, пересекается ли внутренняя часть указанного PathIterator с внутренней частью указанного набора прямоугольных координат. |
static boolean |
intersects |
Проверяет, пересекается ли внутренняя часть указанного PathIterator с внутренней частью указанного Rectangle2D. |
final boolean |
intersects |
Проверяет, пересекается ли внутренняя часть Shape с внутренней частью указанной Rectangle2D. |
abstract void |
lineTo |
Добавляет точку в траекторию, нарисовав прямую линию от текущих координат к новым указанным координатам, заданным с двойной точностью. |
abstract void |
moveTo |
Добавляет точку в траекторию, переместившись в указанные координаты, заданные с двойной точностью. |
abstract void |
quadTo |
Добавляет криволинейный сегмент, определяемый двумя новыми точками, в траекторию, нарисовав квадратичную кривую, которая пересекает как текущие координаты, так и указанные координаты (x2,y2), используя указанную точку (x1,y1) в качестве квадратичной параметрической контрольной точки. |
final void |
reset() |
Сбрасывает траекторию в пустое состояние. |
final void |
setWindingRule |
Устанавливает правило обхода для этой траектории в указанное значение. |
abstract void |
transform |
Преобразует геометрию этой траектории с помощью указанного AffineTransform. |
abstract void |
trimToSize() |
Уменьшает ёмкость экземпляра Path2D до его текущего размера. |
Методы, объявленные в классе java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе java.awt.Shape
getBounds2D, getPathIterator
Подробное описание полей
WIND_EVEN_ODD
public static final int WIND_EVEN_ODD
- С момента:
- 1.6
- См. также:
WIND_NON_ZERO
public static final int WIND_NON_ZERO
- С момента:
- 1.6
- См. также:
Подробное описание методов
moveTo
public abstract void moveTo(double x, double y)
- Параметры:
-
x- указанная координата X -
y- указанная координата Y - С момента:
- 1.6
lineTo
public abstract void lineTo(double x, double y)
- Параметры:
-
x- указанная координата X -
y- указанная координата Y - С момента:
- 1.6
quadTo
public abstract void quadTo(double x1, double y1, double x2, double y2)
(x2,y2), используя указанную точку (x1,y1) в качестве квадратичной параметрической управляющей точки. Все координаты указаны с двойной точностью.- Параметры:
-
x1- координата X квадратичной управляющей точки -
y1- координата Y квадратичной управляющей точки -
x2- координата X конечной точки -
y2- координата Y конечной точки - С момента:
- 1.6
curveTo
public abstract void curveTo(double x1, double y1, double x2, double y2, double x3, double y3)
(x3,y3), используя указанные точки (x1,y1) и (x2,y2) в качестве управляющих точек Безье. Все координаты указаны с двойной точностью.- Параметры:
-
x1- координата X первой управляющей точки Безье -
y1- координата Y первой управляющей точки Безье -
x2- координата X второй управляющей точки Безье -
y2- координата Y второй управляющей точки Безье -
x3- координата X конечной точки -
y3- координата Y конечной точки - С момента:
- 1.6
closePath
public final void closePath()
moveTo. Если путь уже закрыт, этот метод не имеет эффекта.- С момента:
- 1.6
append
public final void append(Shape s, boolean connect)
Shape к пути, возможно, соединяя новую геометрию с существующими сегментами пути отрезком прямой. Если параметр connect равен true и путь не пуст, то любой начальный moveTo в геометрии добавляемого Shape преобразуется в отрезок lineTo. Если координаты назначения такого соединяющего lineTo отрезка совпадают с координатами окончания текущей открытой подцепи, то отрезок пропускается как избыточный. Правило очерёдности указанного Shape игнорируется, и добавленная геометрия управляется правилом очерёдности, заданным для этого пути.- Параметры:
-
s- объектShape, чья геометрия добавляется к этому пути -
connect- логическое значение для управления тем, преобразовать или нет начальныйmoveToотрезок в отрезокlineToдля соединения новой геометрии с существующим путём - С момента:
- 1.6
append
public abstract void append(PathIterator pi, boolean connect)
PathIterator к пути, возможно, соединяя новую геометрию с существующими сегментами пути отрезком прямой. Если параметр connect равен true и путь не пуст, то любой начальный moveTo в геометрии добавляемого Shape преобразуется в отрезок lineTo. Если координаты назначения такого соединяющего lineTo отрезка совпадают с координатами окончания текущей открытой подцепи, то отрезок пропускается как избыточный. Правило очерёдности указанного Shape игнорируется, и добавленная геометрия управляется правилом очерёдности, заданным для этого пути.- Параметры:
-
pi- объектPathIterator, чья геометрия добавляется к этому пути -
connect- логическое значение для управления тем, преобразовать или нет начальныйmoveToотрезок в отрезокlineToдля соединения новой геометрии с существующим путём - С момента:
- 1.6
getWindingRule
public final int getWindingRule()
- Возвращает:
- целое число, представляющее текущее правило очерёдности.
- С момента:
- 1.6
- См. также:
setWindingRule
public final void setWindingRule(int rule)
- Параметры:
-
rule- целое число, представляющее указанное правило очерёдности - Исключения:
-
IllegalArgumentException- еслиruleне равно либоWIND_EVEN_ODD, либоWIND_NON_ZERO - С момента:
- 1.6
- См. также:
getCurrentPoint
public final Point2D getCurrentPoint()
Point2D.- Возвращает:
- объект
Point2D, содержащий координаты конца пути, илиnull, если в пути нет точек. - С момента:
- 1.6
reset
public final void reset()
- С момента:
- 1.6
transform
public abstract void transform(AffineTransform at)
AffineTransform. Геометрия преобразуется на месте, что постоянно изменяет границу, определённую этим объектом.- Параметры:
-
at-AffineTransform, используемый для преобразования области - С момента:
- 1.6
createTransformedShape
public final Shape createTransformedShape(AffineTransform at)
Shape, представляющий преобразованную версию этого Path2D. Обратите внимание, что точный тип и точность координат возвращаемого значения не определены для этого метода. Метод вернёт Shape, который содержит не меньше точности для преобразованной геометрии, чем этот Path2D в настоящее время поддерживает, но он может содержать и не больше точности. Если компромисс точности против размера памяти в результе важен, то для явного выбора должны быть использованы удобные конструкторы в подклассах Path2D.Float и Path2D.Double.- Параметры:
-
at-AffineTransform, используемый для преобразования новогоShape. - Возвращает:
- новый
Shape, преобразованный с помощью указанногоAffineTransform. - С момента:
- 1.6
getBounds
public final Rectangle getBounds()
Rectangle, полностью охватывающее Shape. Обратите внимание, что нет гарантии, что возвращаемый Rectangle является наименьшим ограничивающим прямоугольником, охватывающим Shape, только то, что Shape полностью лежит внутри указанного Rectangle. Возвращаемый Rectangle также может не полностью охватить Shape, если Shape превышает ограниченный диапазон целочисленного типа данных. Метод getBounds2D обычно возвращает более узкий ограничивающий прямоугольник благодаря большей гибкости в представлении. Обратите внимание, что определение принадлежности может привести к ситуациям, когда точки на определяющей линии shape могут не считаться содержащимися в возвращаемом объекте bounds, но только в тех случаях, когда эти точки также не считаются содержащимися в исходном shape.
Если point находится внутри shape в соответствии с методом contains(point), то он должен находиться внутри границ возвращаемого Rectangle в соответствии с методом contains(point) объекта bounds. Конкретно:
shape.contains(x,y) требует bounds.contains(x,y)
Если point не находится внутри shape, он все равно может быть содержащимся в объекте bounds:
bounds.contains(x,y) не подразумевает shape.contains(x,y)
contains
public static boolean contains(PathIterator pi, double x, double y)
PathIterator. Этот метод предоставляет базовые средства для разработчиков, реализующих интерфейс Shape, для реализации поддержки метода Shape.contains(double, double).
- Parameters:
-
pi- указанныйPathIterator -
x- указанная координата X -
y- указанная координата Y - Returns:
-
true, если указанные координаты находятся внутри указанногоPathIterator;falseв противном случае - Since:
- 1.6
contains
public static boolean contains(PathIterator pi, Point2D p)
Point2D внутри замкнутой границы указанного PathIterator. Этот метод предоставляет базовые средства для разработчиков, реализующих интерфейс Shape, для реализации поддержки метода Shape.contains(Point2D).
- Parameters:
-
pi- указанныйPathIterator -
p- указанныйPoint2D - Returns:
-
true, если указанные координаты находятся внутри указанногоPathIterator;falseв противном случае - Since:
- 1.6
contains
public final boolean contains(double x, double y)
Shape, как описано в определении принадлежности.contains
public final boolean contains(Point2D p)
Point2D внутри границы Shape, как описано в определении принадлежности.contains
public static boolean contains(PathIterator pi, double x, double y, double w, double h)
PathIterator. Этот метод предоставляет базовые средства для разработчиков, реализующих интерфейс Shape, для реализации поддержки метода Shape.contains(double, double, double, double).
Этот метод может консервативно возвращать false в случаях, когда указанный прямоугольный участок пересекает отрезок пути, но этот отрезок не представляет границу между внутренностью и внешностью пути. Такие отрезки могут полностью находиться внутри внутренности пути, если они являются частью пути с правилом обхода WIND_NON_ZERO, или если отрезки повторены в обратном направлении, так что две группы отрезков взаимно компенсируют друг друга без какой-либо внешней области между ними. Для определения того, представляют ли отрезки истинные границы внутренней части пути, потребовались бы обширные вычисления, охватывающие все отрезки пути и правило обхода, и поэтому выходят за рамки этой реализации.
- Parameters:
-
pi- указанныйPathIterator -
x- указанная координата X -
y- указанная координата Y -
w- ширина указанного прямоугольного участка -
h- высота указанного прямоугольного участка - Returns:
-
true, если указанныйPathIteratorсодержит указанный прямоугольный участок;falseв противном случае. - Since:
- 1.6
contains
public static boolean contains(PathIterator pi, Rectangle2D r)
Rectangle2D находится внутри замкнутой границы указанного PathIterator. Этот метод предоставляет базовые средства для разработчиков, реализующих интерфейс Shape, для реализации поддержки метода Shape.contains(Rectangle2D).
Этот метод может консервативно возвращать false в случаях, когда указанный прямоугольный участок пересекает отрезок пути, но этот отрезок не представляет границу между внутренностью и внешностью пути. Такие отрезки могут полностью находиться внутри внутренности пути, если они являются частью пути с правилом обхода WIND_NON_ZERO, или если отрезки повторены в обратном направлении, так что две группы отрезков взаимно компенсируют друг друга без какой-либо внешней области между ними. Для определения того, представляют ли отрезки истинные границы внутренней части пути, потребовались бы обширные вычисления, охватывающие все отрезки пути и правило обхода, и поэтому выходят за рамки этой реализации.
- Parameters:
-
pi- указанныйPathIterator -
r- указанныйRectangle2D - Returns:
-
true, если указанныйPathIteratorсодержит указанныйRectangle2D;falseв противном случае. - Since:
- 1.6
содержит
public final boolean contains(double x, double y, double w, double h)
Shape содержит указанную прямоугольную область. Все координаты, лежащие внутри прямоугольной области, должны находиться внутри Shape, чтобы вся прямоугольная область считалась содержащейся внутри Shape. Метод Shape.contains() позволяет реализации Shape консервативно возвращать false, когда:
- метод
intersectвозвращаетtrueи - вычисления для определения того, полностью ли
Shapeсодержит прямоугольную область, являются слишком сложными.
Shapes этот метод может возвращать false, даже если Shape содержит прямоугольную область. Класс Area выполняет более точные геометрические вычисления, чем большинство объектов Shape, и поэтому может использоваться, если требуется более точный ответ. Этот метод может консервативно возвращать false в тех случаях, когда указанная прямоугольная область пересекает сегмент пути, но этот сегмент не представляет границу между внутренней и внешней областью пути. Такие сегменты могут полностью находиться внутри внутренней области пути, если они являются частью пути с правилом обхода WIND_NON_ZERO, или если сегменты повторно прослеживаются в обратном направлении таким образом, что две группы сегментов взаимно компенсируют друг друга без появления внешней области между ними. Чтобы определить, представляют ли сегменты истинные границы внутренней области пути, потребовались бы обширные вычисления, включающие все сегменты пути и правило обхода, что выходит за рамки данной реализации.
- Определено в:
-
containsв интерфейсеShape - Параметры:
-
x- координата X левого верхнего угла указанной прямоугольной области -
y- координата Y левого верхнего угла указанной прямоугольной области -
w- ширина указанной прямоугольной области -
h- высота указанной прямоугольной области - Возвращает:
-
true, если внутренняя областьShapeполностью содержит указанную прямоугольную область;falseв противном случае или еслиShapeсодержит прямоугольную область, а методintersectsвозвращаетtrue, и вычисления содержания слишком сложны. - С:
- 1.6
- См. также:
содержит
public final boolean contains(Rectangle2D r)
Shape содержит указанный Rectangle2D. Метод Shape.contains() позволяет реализации Shape консервативно возвращать false, когда: - метод
intersectвозвращаетtrueи - вычисления для определения того, полностью ли
ShapeсодержитRectangle2D, являются слишком сложными.
Shapes этот метод может возвращать false, даже если Shape содержит Rectangle2D. Класс Area выполняет более точные геометрические вычисления, чем большинство объектов Shape, и поэтому может использоваться, если требуется более точный ответ. Этот метод может консервативно возвращать false в тех случаях, когда указанная прямоугольная область пересекает сегмент пути, но этот сегмент не представляет границу между внутренней и внешней областью пути. Такие сегменты могут полностью находиться внутри внутренней области пути, если они являются частью пути с правилом обхода WIND_NON_ZERO, или если сегменты повторно прослеживаются в обратном направлении таким образом, что две группы сегментов взаимно компенсируют друг друга без появления внешней области между ними. Чтобы определить, представляют ли сегменты истинные границы внутренней области пути, потребовались бы обширные вычисления, включающие все сегменты пути и правило обхода, что выходит за рамки данной реализации.
- Определено в:
-
containsв интерфейсеShape - Параметры:
-
r- УказанныйRectangle2D - Возвращает:
-
true, если внутренняя областьShapeполностью содержитRectangle2D;falseв противном случае или еслиShapeсодержитRectangle2D, а методintersectsвозвращаетtrue, и вычисления содержания слишком сложны. - С:
- 1.6
- См. также:
пересекает
public static boolean intersects(PathIterator pi, double x, double y, double w, double h)
PathIterator с внутренней областью заданного набора прямоугольных координат. Этот метод предоставляет базовые средства для реализаторов интерфейса Shape для реализации поддержки метода Shape.intersects(double, double, double, double).
Этот метод может консервативно возвращать true в тех случаях, когда указанная прямоугольная область пересекает сегмент пути, но этот сегмент не представляет границу между внутренней и внешней областью пути. Такой случай может возникнуть, если некоторые наборы сегментов пути повторно прослеживаются в обратном направлении таким образом, что две группы сегментов взаимно компенсируют друг друга без какой-либо внутренней области между ними. Чтобы определить, представляют ли сегменты истинные границы внутренней области пути, потребовались бы обширные вычисления, включающие все сегменты пути и правило обхода, что выходит за рамки данной реализации.
- Параметры:
-
pi- УказанныйPathIterator -
x- Указанная координата X -
y- Указанная координата Y -
w- Ширина указанного прямоугольного набора координат -
h- Высота указанного прямоугольного набора координат - Возвращает:
-
true, если указанныйPathIteratorи внутренняя область указанного прямоугольного набора координат пересекаются;falseв противном случае. - С:
- 1.6
пересекает
public static boolean intersects(PathIterator pi, Rectangle2D r)
PathIterator с внутренней областью указанного Rectangle2D. Этот метод предоставляет базовые средства для реализаторов интерфейса Shape для реализации поддержки метода Shape.intersects(Rectangle2D).
Этот метод может консервативно возвращать true в тех случаях, когда указанная прямоугольная область пересекает сегмент пути, но этот сегмент не представляет границу между внутренней и внешней областью пути. Такой случай может возникнуть, если некоторые наборы сегментов пути повторно прослеживаются в обратном направлении таким образом, что две группы сегментов взаимно компенсируют друг друга без какой-либо внутренней области между ними. Чтобы определить, представляют ли сегменты истинные границы внутренней области пути, потребовались бы обширные вычисления, включающие все сегменты пути и правило обхода, что выходит за рамки данной реализации.
- Параметры:
-
pi- УказанныйPathIterator -
r- УказанныйRectangle2D - Возвращает:
-
true, если указанныйPathIteratorи внутренняя область указанногоRectangle2Dпересекаются;falseв противном случае. - С:
- 1.6
intersects
public final boolean intersects(double x, double y, double w, double h)
Shape с внутренней областью заданной прямоугольной области. Прямоугольная область считается пересекающейся с Shape, если любая точка содержится как во внутренней области Shape, так и в заданной прямоугольной области. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true, когда:
- существует высокая вероятность пересечения прямоугольной области и
Shape, но - вычисления для точного определения этого пересечения являются чрезмерно дорогостоящими.
Shapes этот метод может возвращать true, даже если прямоугольная область не пересекает Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, и поэтому может быть использован, если требуется более точный ответ. Этот метод может консервативно возвращать true в тех случаях, когда заданная прямоугольная область пересекает отрезок пути, но этот отрезок не представляет границу между внутренней и внешней областью пути. Такая ситуация может возникнуть, если некоторые отрезки пути проходят повторно в обратном направлении таким образом, что два набора отрезков взаимно компенсируют друг друга без какой-либо внутренней области между ними. Определение того, представляют ли отрезки истинные границы внутренней части пути, потребует обширных вычислений, включающих все отрезки пути и правило обхода, и поэтому выходит за рамки этой реализации.
- Specified by:
-
intersectsв интерфейсеShape - Parameters:
-
x- координата X левого верхнего угла заданной прямоугольной области -
y- координата Y левого верхнего угла заданной прямоугольной области -
w- ширина заданной прямоугольной области -
h- высота заданной прямоугольной области - Returns:
-
true, если внутренняя областьShapeи внутренняя область прямоугольной области пересекаются или, скорее всего, пересекаются, а вычисления пересечения слишком дорогостоящие;falseв противном случае. - Since:
- 1.6
- See Also:
intersects
public final boolean intersects(Rectangle2D r)
Shape с внутренней областью заданного Rectangle2D. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true, когда: - существует высокая вероятность пересечения
Rectangle2DиShape, но - вычисления для точного определения этого пересечения являются чрезмерно дорогостоящими.
Shapes этот метод может возвращать true, даже если Rectangle2D не пересекает Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, и поэтому может быть использован, если требуется более точный ответ. Этот метод может консервативно возвращать true в тех случаях, когда заданная прямоугольная область пересекает отрезок пути, но этот отрезок не представляет границу между внутренней и внешней областью пути. Такая ситуация может возникнуть, если некоторые отрезки пути проходят повторно в обратном направлении таким образом, что два набора отрезков взаимно компенсируют друг друга без какой-либо внутренней области между ними. Определение того, представляют ли отрезки истинные границы внутренней части пути, потребует обширных вычислений, включающих все отрезки пути и правило обхода, и поэтому выходит за рамки этой реализации.
- Specified by:
-
intersectsв интерфейсеShape - Parameters:
-
r- заданныйRectangle2D - Returns:
-
true, если внутренняя областьShapeи внутренняя область заданногоRectangle2Dпересекаются или, скорее всего, пересекаются, а вычисления пересечения слишком дорогостоящие;falseв противном случае. - Since:
- 1.6
- See Also:
getPathIterator
public final PathIterator getPathIterator(AffineTransform at, double flatness)
Shape и предоставляет доступ к уплощенному представлению геометрии контура Shape. Итератор возвращает только типы точек SEG_MOVETO, SEG_LINETO и SEG_CLOSE.
Если задан необязательный AffineTransform, координаты, возвращаемые в процессе итерации, преобразуются соответствующим образом.
Количество разбиений криволинейных отрезков контролируется параметром flatness, который задаёт максимальное расстояние, на которое любая точка на нерасплывшейся преобразованной кривой может отклониться от возвращаемых уплощённых отрезков пути. Обратите внимание, что ограничение на точность уплощённого пути может быть задано неявно, что приведёт к тому, что очень малые параметры сглаживания будут рассматриваться как большие значения. Это ограничение, если оно существует, определяется конкретной реализацией, используемой.
Каждый вызов этого метода возвращает новый объект-итератор PathIterator, который независимо просматривает геометрию объекта Shape, не завися от других объектов-итераторов PathIterator, используемых одновременно.
Рекомендуется, но не гарантируется, что объекты, реализующие интерфейс Shape, изолируют итерации, которые в процессе, от любых изменений, которые могут произойти в геометрии исходного объекта во время таких итераций.
Итератор для этого класса не потокобезопасен, что означает, что этот класс Path2D не гарантирует, что изменения в геометрии этого объекта Path2D не повлияют на уже выполняющиеся итерации этой геометрии.
- Specified by:
-
getPathIteratorв интерфейсеShape - Parameters:
-
at- необязательноеAffineTransform, которое применяется к координатам по мере их возвращения в процессе итерации, илиnull, если требуются не преобразованные координаты -
flatness- максимальное расстояние, на которое отрезки прямых, используемые для приближения криволинейных отрезков, могут отклоняться от любой точки на исходной кривой - Returns:
- новый итератор
PathIterator, который независимо просматривает уплощенное представление геометрииShape. - Since:
- 1.6
clone
public abstract Object clone()
- Overrides:
-
cloneв классеObject - Returns:
- клонированный экземпляр.
- Throws:
-
OutOfMemoryError- если недостаточно памяти. - Since:
- 1.6
- See Also:
trimToSize
public abstract void trimToSize()
- Since:
- 10
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/geom/Path2D.html