Интерфейс 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 предоставляет определения для объектов, представляющих собой геометрические фигуры. Фигура описывается объектом 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
- См. также:
содержит
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
- См. также:
содержит
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, координаты, возвращаемые в процессе итерации, преобразуются соответствующим образом. Каждый вызов этого метода возвращает новый объект-итератор PathIterator, который обходит геометрию объекта Shape независимо от других объектов-итераторов PathIterator.
Рекомендуется, но не гарантируется, что объекты, реализующие интерфейс Shape, изолируют итерации, которые находятся в процессе, от любых изменений, которые могут произойти в геометрии исходного объекта во время таких итераций.
- Параметры:
-
at- необязательноеAffineTransform, которое должно быть применено к координатам по мере их возвращения в процессе итерации, илиnullесли желаемы не преобразованные координаты - Возвращает:
- новый объект-итератор
PathIterator, который независимо обходит геометриюShape. - C момента:
- 1.2
getPathIterator
PathIterator getPathIterator(AffineTransform at, double flatness)
Shape и предоставляет доступ к сглаженной геометрии контура Shape . Итератор возвращает только типы точек SEG_MOVETO, SEG_LINETO и SEG_CLOSE.
Если указан необязательный AffineTransform, координаты, возвращаемые в процессе итерации, преобразуются соответствующим образом.
Степень разбиения криволинейных сегментов контролируется параметром flatness, который задаёт максимальное расстояние, на которое любая точка на не сглаженной преобразованной кривой может отклониться от возвращённых сглаженных сегментов пути. Обратите внимание, что ограничение точности сглаженного пути может быть установлено неявно, что может привести к тому, что очень маленькие параметры сглаживания будут обрабатываться как большие значения. Это ограничение, если оно существует, определяется конкретной реализацией, которая используется.
Каждый вызов этого метода возвращает новый объект-итератор PathIterator, который обходит геометрию объекта Shape независимо от других объектов-итераторов PathIterator.
Рекомендуется, но не гарантируется, что объекты, реализующие интерфейс Shape, изолируют итерации, которые находятся в процессе, от любых изменений, которые могут произойти в геометрии исходного объекта во время таких итераций.
- Параметры:
-
at- необязательноеAffineTransform, которое должно быть применено к координатам по мере их возвращения в процессе итерации, илиnullесли желаемы не преобразованные координаты -
flatness- максимальное расстояние, на которое отрезки прямых, используемые для приближения криволинейных сегментов, разрешено отклоняться от любой точки исходной кривой - Возвращает:
- новый объект-итератор
PathIterator, который независимо обходит сглаженное представление геометрииShape. - C момента:
- 1.2
© 1993, 2023, 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/21/docs/api/java.desktop/java/awt/Shape.html