Класс 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 — с интерпретацией и обработкой замкнутых областей двумерного геометрического пространства.
В интерфейсе 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 до его текущего размера. |
Методы, объявленные в классе Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе 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).
- Параметры:
-
pi— указанныйPathIterator -
x— указанная координата X -
y— указанная координата Y - Возвращает:
-
true, если указанные координаты находятся внутри указанногоPathIterator; в противном случае —false - Начиная с:
- 1.6
contains
public static boolean contains(PathIterator pi, Point2D p)
Point2D внутри замкнутой границы указанного PathIterator. Этот метод предоставляет базовые средства для разработчиков интерфейса Shape по реализации поддержки метода Shape.contains(Point2D).
- Параметры:
-
pi— указанныйPathIterator -
p— указанныйPoint2D - Возвращает:
-
true, если указанные координаты находятся внутри указанногоPathIterator; в противном случае —false - Начиная с:
- 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 или если сегменты повторно проходятся в обратном направлении так, что две группы сегментов взаимно компенсируются и между ними не остается внешней области. Чтобы определить, являются ли сегменты действительными границами внутренней области пути, потребовались бы обширные вычисления с учетом всех сегментов пути и правила обхода, что выходит за рамки данной реализации.
- Параметры:
-
pi— указанныйPathIterator -
x— указанная координата X -
y— указанная координата Y -
w— ширина указанной прямоугольной области -
h— высота указанной прямоугольной области - Возвращает:
-
true, если указанныйPathIteratorсодержит указанную прямоугольную область; в противном случае —false. - Начиная с:
- 1.6
contains
public static boolean contains(PathIterator pi, Rectangle2D r)
Rectangle2D целиком внутри замкнутой границы указанного PathIterator. Этот метод предоставляет базовые средства для разработчиков интерфейса Shape по реализации поддержки метода Shape.contains(Rectangle2D).
Этот метод может консервативно возвращать false в случаях, когда указанная прямоугольная область пересекает сегмент пути, но этот сегмент не является границей между внутренней и внешней областями пути. Такие сегменты могут целиком лежать во внутренней области пути, если они являются частью пути с правилом обхода WIND_NON_ZERO или если сегменты повторно проходятся в обратном направлении так, что две группы сегментов взаимно компенсируются и между ними не остается внешней области. Чтобы определить, являются ли сегменты действительными границами внутренней области пути, потребовались бы обширные вычисления с учетом всех сегментов пути и правила обхода, что выходит за рамки данной реализации.
- Параметры:
-
pi— указанныйPathIterator -
r— указанныйRectangle2D - Возвращает:
-
true, если указанныйPathIteratorсодержит указанныйRectangle2D; в противном случае —false. - Начиная с:
- 1.6
contains
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
- См. также:
contains
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
- См. также:
intersects
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
intersects
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 в случаях, когда указанная прямоугольная область пересекает сегмент пути, но этот сегмент не является границей между внутренней и внешней областями пути. Такая ситуация может возникнуть, если некоторые сегменты пути повторяются в обратном направлении, так что две группы сегментов взаимно компенсируют друг друга и между ними нет внутренней области. Чтобы определить, являются ли сегменты настоящими границами внутренней области пути, потребовались бы обширные вычисления с участием всех сегментов пути и правила обхода, что выходит за рамки данной реализации.
- Определено в:
-
intersectsв интерфейсеShape - Параметры:
-
x— координата X верхнего левого угла указанной прямоугольной области -
y— координата Y верхнего левого угла указанной прямоугольной области -
w— ширина указанной прямоугольной области -
h— высота указанной прямоугольной области - Возвращает:
-
true, если внутренняя областьShapeи внутренняя область прямоугольной области пересекаются либо с высокой вероятностью пересекаются, а вычисление пересечения потребовало бы чрезмерных затрат; в противном случае —false. - С версии:
- 1.6
- См. также:
intersects
public final boolean intersects(Rectangle2D r)
Shape с внутренней областью указанного Rectangle2D. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true в следующих случаях: - высока вероятность того, что
Rectangle2DиShapeпересекаются, но - точное определение этого пересечения требует чрезмерных вычислительных затрат.
Shapes данный метод может вернуть true, даже если Rectangle2D не пересекает Shape. Класс Area выполняет более точные вычисления геометрических пересечений, чем большинство объектов Shape, и поэтому его можно использовать, если требуется более точный результат. Этот объект метода может консервативно возвращать true в случаях, когда указанная прямоугольная область пересекает сегмент пути, но этот сегмент не является границей между внутренней и внешней областями пути. Такая ситуация может возникнуть, если некоторые сегменты пути повторяются в обратном направлении, так что две группы сегментов взаимно компенсируют друг друга и между ними нет внутренней области. Чтобы определить, являются ли сегменты настоящими границами внутренней области пути, потребовались бы обширные вычисления с участием всех сегментов пути и правила обхода, что выходит за рамки данной реализации.
- Определено в:
-
intersectsв интерфейсеShape - Параметры:
-
r— указанныйRectangle2D - Возвращает:
-
true, если внутренняя областьShapeи внутренняя область указанногоRectangle2Dпересекаются либо с высокой вероятностью пересекаются, а вычисление пересечения потребовало бы чрезмерных затрат; в противном случае —false. - С версии:
- 1.6
- См. также:
getPathIterator
public final PathIterator getPathIterator(AffineTransform at, double flatness)
Shape и предоставляет доступ к упрощённому представлению геометрии контура Shape. Итератор возвращает только типы точек SEG_MOVETO, SEG_LINETO и SEG_CLOSE.
Если указано необязательное значение AffineTransform, возвращаемые при итерации координаты преобразуются соответствующим образом.
Степень разбиения криволинейных сегментов задаётся параметром flatness, который определяет максимальное расстояние, на которое любая точка исходной неприближённой преобразованной кривой может отклоняться от возвращаемых сегментов упрощённого пути. Обратите внимание, что ограничение точности упрощённого пути может применяться незаметно, из-за чего очень малые значения параметра упрощения будут считаться большими. Если такое ограничение существует, оно определяется используемой конкретной реализацией.
Каждый вызов этого метода возвращает новый объект PathIterator, который независимо от любых других одновременно используемых объектов PathIterator проходит по геометрии объекта Shape.
Рекомендуется, но не гарантируется, чтобы объекты, реализующие интерфейс Shape, изолировали выполняющиеся итерации от любых изменений геометрии исходного объекта, которые могут произойти во время таких итераций.
Итератор этого класса не является потокобезопасным: это означает, что класс Path2D не гарантирует, что изменения геометрии объекта Path2D не повлияют на уже выполняющиеся итерации этой геометрии.
- Определено в:
-
getPathIteratorв интерфейсеShape - Параметры:
-
at— необязательное значениеAffineTransform, применяемое к координатам при их возврате во время итерации, илиnull, если нужны координаты без преобразования -
flatness— максимальное расстояние, на которое отрезки, используемые для аппроксимации криволинейных сегментов, могут отклоняться от любой точки исходной кривой - Возвращает:
- новый
PathIterator, который независимо проходит по упрощённому представлению геометрииShape. - С версии:
- 1.6
clone
public abstract Object clone()
- Переопределяет:
-
cloneв классеObject - Возвращает:
- копию этого экземпляра.
- Вызывает исключение:
-
OutOfMemoryError— если недостаточно памяти. - С версии:
- 1.6
- См. также:
trimToSize
public abstract void trimToSize()
- С версии:
- 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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/geom/Path2D.html