Интерфейс Shape
- Все известные реализующие классы:
-
Arc2D,Arc2D.Double,Arc2D.Float,Area,BasicTextUI.BasicCaret,CubicCurve2D,CubicCurve2D.Double,CubicCurve2D.Float,DefaultCaret,Ellipse2D,Ellipse2D.Double,Ellipse2D.Float,GeneralPath,Line2D,Line2D.Double,Line2D.Float,Path2D,Path2D.Double,Path2D.Float,Polygon,QuadCurve2D,QuadCurve2D.Double,QuadCurve2D.Float,Rectangle,Rectangle2D,Rectangle2D.Double,Rectangle2D.Float,RectangularShape,RoundRectangle2D,RoundRectangle2D.Double,RoundRectangle2D.Float
public interface Shape
Shape предоставляет определения для объектов, которые представляют собой некоторую геометрическую форму. Shape описывается объектом PathIterator, который может выражать контур Shape, а также правило для определения того, как контур делит 2D-плоскость на внутренние и внешние точки. Каждый объект Shape предоставляет обратные вызовы для получения ограничивающей рамки геометрии, определения, лежат ли точки или прямоугольники частично или полностью внутри внутренней области Shape, и извлечения объекта PathIterator, который описывает траекторию контура Shape. Определение принадлежности к внутренней области: Точка считается лежащей внутри Shape, если и только если:
- она полностью лежит внутри границы
Shapeили - она лежит точно на границе
Shapeи пространство непосредственно прилежащее к точке в направлении возрастанияXполностью лежит внутри границы или - она лежит точно на сегменте горизонтальной границы и пространство непосредственно прилежащее к точке в направлении возрастания
Yлежит внутри границы.
Методы contains и intersects рассматривают внутреннюю область Shape как площадь, которую она охватывает, как если бы она была заполнена. Это означает, что эти методы рассматривают незамкнутые фигуры как неявно замкнутые для определения, содержит ли фигура прямоугольник или пересекает его, или содержит ли фигура точку.
- С:
- 1.2
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
contains |
Проверяет, лежат ли указанные координаты внутри границы Shape, как описано в определении принадлежности к внутренней области. |
boolean |
contains |
Проверяет, содержит ли внутренняя область Shape полностью указанную прямоугольную область. |
boolean |
contains |
Проверяет, лежит ли указанная Point2D внутри границы Shape, как описано в определении принадлежности к внутренней области. |
boolean |
contains |
Проверяет, содержит ли внутренняя область Shape полностью указанную Rectangle2D. |
Rectangle |
getBounds() |
Возвращает целочисленный Rectangle, который полностью охватывает Shape. |
Rectangle2D |
getBounds2D() |
Возвращает ограничивающую рамку Shape, более точную, чем метод getBounds. |
PathIterator |
getPathIterator |
Возвращает объект-итератор, который проходит по границе Shape и предоставляет доступ к геометрии контура Shape. |
PathIterator |
getPathIterator |
Возвращает объект-итератор, который проходит по границе Shape и предоставляет доступ к сглаженному представлению геометрии контура Shape. |
boolean |
intersects |
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанной прямоугольной области. |
boolean |
intersects |
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанной Rectangle2D. |
Подробное описание методов
getBounds
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)
- Возвращает:
- целое число
Rectangle, которое полностью охватываетShape. - С:
- 1.2
- См. также:
getBounds2D
Rectangle2D getBounds2D()
Shape, чем метод getBounds. Обратите внимание, что нет гарантии, что возвращаемый Rectangle2D является наименьшей ограничивающей прямоугольником, охватывающей Shape, только что Shape целиком лежит внутри указанного Rectangle2D. Ограничивающая прямоугольник, возвращаемая этим методом, обычно уже, чем возвращаемая методом getBounds, и никогда не терпит неудачу из-за проблем с переполнением, так как возвращаемое значение может быть экземпляром Rectangle2D, который использует значения двойной точности для хранения размеров. Обратите внимание, что определение принадлежности может привести к ситуациям, где точки на определяющей контуре shape могут не считаться содержащимися в возвращаемом bounds объекте, но только в тех случаях, когда эти точки также не считаются содержащимися в исходном shape.
Если point находится внутри shape в соответствии с contains(point) методом, то оно должно быть внутри возвращаемого Rectangle2D ограничивающего объекта в соответствии с contains(point) методом bounds. Конкретно:
shape.contains(p) требует bounds.contains(p)
Если point не находится внутри shape, то оно все еще может содержаться в bounds объекте:
bounds.contains(p) не подразумевает shape.contains(p)
- Возвращает:
- экземпляр
Rectangle2D, который является высокоточным ограничивающим прямоугольником дляShape. - С:
- 1.2
- См. также:
contains
boolean contains(double x, double y)
Shape, как описано в определении принадлежности.- Параметры:
-
x- заданная координата X, подлежащая проверке -
y- заданная координата Y, подлежащая проверке - Возвращает:
-
true, если заданные координаты находятся внутри границыShape;falseв противном случае. - С:
- 1.2
contains
boolean contains(Point2D p)
Point2D внутри границы Shape, как описано в определении принадлежности.- Параметры:
-
p- указаннаяPoint2Dдля проверки - Возвращает:
-
true, если указаннаяPoint2Dнаходится внутри границыShape;falseв противном случае. - С:
- 1.2
intersects
boolean intersects(double x, double y, double w, double h)
Shape с внутренней частью указанной прямоугольной области. Прямоугольная область считается пересекающейся с Shape, если любая точка находится как внутри внутренней части Shape, так и в указанной прямоугольной области. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true, когда:
- существует высокая вероятность пересечения прямоугольной области и
Shape, но - вычисления для точного определения этого пересечения являются слишком дорогостоящими.
Shapes этот метод может возвращать true, даже если прямоугольная область не пересекает Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, и поэтому может быть использован, если требуется более точный ответ.- Параметры:
-
x- координата X верхнего левого угла указанной прямоугольной области -
y- координата Y верхнего левого угла указанной прямоугольной области -
w- ширина указанной прямоугольной области -
h- высота указанной прямоугольной области - Возвращает:
-
true, если внутренняя частьShapeи внутренняя часть прямоугольной области пересекаются или обе имеют высокую вероятность пересечения, и вычисления пересечения являются слишком дорогостоящими;falseв противном случае. - С:
- 1.2
- См. также:
intersects
boolean intersects(Rectangle2D r)
Shape с внутренней частью указанного Rectangle2D. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true, когда: - существует высокая вероятность пересечения
Rectangle2DиShape, но - вычисления для точного определения этого пересечения являются слишком дорогостоящими.
Shapes этот метод может возвращать true, даже если Rectangle2D не пересекает Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, и поэтому может быть использован, если требуется более точный ответ.- Параметры:
-
r- указанныйRectangle2D - Возвращает:
-
true, если внутренняя частьShapeи внутренняя часть указаннойRectangle2Dпересекаются или обе имеют высокую вероятность пересечения, и вычисления пересечения являются слишком дорогостоящими;falseв противном случае. - С:
- 1.2
- См. также:
contains
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 объектов, и поэтому может использоваться, если требуется более точный ответ.- Параметры:
-
x- координата X левого верхнего угла указанной прямоугольной области -
y- координата Y левого верхнего угла указанной прямоугольной области -
w- ширина указанной прямоугольной области -
h- высота указанной прямоугольной области - Возвращает:
-
trueесли внутренняя областьShapeполностью содержит указанную прямоугольную область;falseв противном случае или еслиShapeсодержит прямоугольную область, а методintersectsвозвращаетtrueи вычисления включения слишком сложны. - C момента:
- 1.2
- См. также:
contains
boolean contains(Rectangle2D r)
Shape содержит указанный Rectangle2D. Метод Shape.contains() позволяет реализации Shape консервативно возвращать false в случае: - метод
intersectвозвращаетtrueи - вычисления для определения того, полностью ли
ShapeсодержитRectangle2D, слишком сложны.
Shapes этот метод может возвращать false даже в том случае, если Shape содержит Rectangle2D. Класс Area выполняет более точные геометрические вычисления, чем большинство Shape объектов, и поэтому может использоваться, если требуется более точный ответ.- Параметры:
-
r- УказанныйRectangle2D - Возвращает:
-
trueесли внутренняя областьShapeполностью содержитRectangle2D;falseв противном случае или еслиShapeсодержитRectangle2Dи методintersectsвозвращаетtrueи вычисления включения слишком сложны. - C момента:
- 1.2
- См. также:
getPathIterator
PathIterator getPathIterator(AffineTransform at)
Shape и предоставляет доступ к геометрии контура Shape. Если указан необязательный AffineTransform, координаты, возвращаемые в процессе итерации, преобразуются соответствующим образом. Каждый вызов этого метода возвращает новый объект-итератор, который обходит геометрию объекта Shape независимо от других объектов-итераторов, используемых в то же время.
Рекомендуется, но не гарантируется, что объекты, реализующие интерфейс Shape, изолируют итерации, находящиеся в процессе, от любых изменений, которые могут произойти в геометрии исходного объекта во время таких итераций.
- Параметры:
-
at- необязательныйAffineTransformдля применения к координатам по мере их возвращения в процессе итерации, илиnullесли желаемы не преобразованные координаты - Возвращает:
- новый объект-итератор, который независимо обходит геометрию
Shape. - C момента:
- 1.2
getPathIterator
PathIterator getPathIterator(AffineTransform at, double flatness)
Shape и предоставляет доступ к сглаженной геометрии контура Shape . Итератор возвращает только типы точек SEG_MOVETO, SEG_LINETO и SEG_CLOSE.
Если указан необязательный AffineTransform, координаты, возвращаемые в процессе итерации, преобразуются соответствующим образом.
Степень детализации криволинейных сегментов контролируется параметром flatness, который определяет максимальное расстояние, на которое любая точка трансформированной кривой может отклониться от возвращаемых сглаженных сегментов пути. Обратите внимание, что возможно неочевидное ограничение на точность сглаженного пути, в результате чего очень малые параметры сглаживания будут рассматриваться как более крупные значения. Это ограничение, если оно существует, определяется конкретной реализацией, используемой.
Каждый вызов этого метода возвращает новый объект-итератор, который обходит геометрию объекта Shape независимо от других объектов-итераторов, используемых в то же время.
Рекомендуется, но не гарантируется, что объекты, реализующие интерфейс Shape, изолируют итерации, находящиеся в процессе, от любых изменений, которые могут произойти в геометрии исходного объекта во время таких итераций.
- Параметры:
-
at- необязательныйAffineTransformдля применения к координатам по мере их возвращения в процессе итерации, илиnullесли желаемы не преобразованные координаты -
flatness- максимальное расстояние, на которое сегменты прямых, используемые для приближения криволинейных сегментов, могут отклониться от любой точки исходной кривой - Возвращает:
- новый объект-итератор, который независимо обходит сглаженный вид геометрии
Shape. - C момента:
- 1.2
© 1993, 2021, 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/17/docs/api/java.desktop/java/awt/Shape.html