Spec-Zone.ru › OpenJDK 24

Интерфейс 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
См. также:
  • PathIterator
  • AffineTransform
  • FlatteningPathIterator
  • GeneralPath

Краткое описание методов

Модификатор и тип Метод Описание
boolean contains(double x, double y)
Проверяет, находятся ли указанные координаты внутри границы Shape, как описано в определении принадлежности.
boolean contains(double x, double y, double w, double h)
Проверяет, полностью ли внутренняя часть Shape содержит указанную прямоугольную область.
boolean contains(Point2D p)
Проверяет, находится ли указанная Point2D внутри границы Shape, как описано в определении принадлежности.
boolean contains(Rectangle2D r)
Проверяет, полностью ли внутренняя часть Shape содержит указанную Rectangle2D.
Rectangle getBounds()
Возвращает целое число Rectangle, которое полностью охватывает Shape.
Rectangle2D getBounds2D()
Возвращает ограничивающую рамку Shape с высокой точностью и большей точностью, чем метод getBounds.
PathIterator getPathIterator(AffineTransform at)
Возвращает объект итератора, который итерируется по границе Shape и предоставляет доступ к геометрии контура Shape.
PathIterator getPathIterator(AffineTransform at, double flatness)
Возвращает объект итератора, который итерируется по границе Shape и предоставляет доступ к сглаженному представлению геометрии контура Shape.
boolean intersects(double x, double y, double w, double h)
Проверяет, пересекается ли внутренняя часть Shape с внутренней частью указанной прямоугольной области.
boolean intersects(Rectangle2D r)
Проверяет, пересекается ли внутренняя часть 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()

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
См. также:
  • getBounds()

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
См. также:
  • Area

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
См. также:
  • intersects(double, double, double, double)

содержит

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, а вычисления содержательности слишком трудоёмки.
С:
1.2
См. также:
  • Area
  • intersects(double, double, double, double)

содержит

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, а вычисления содержательности слишком трудоемки.
С:
1.2
См. также:
  • contains(double, double, double, double)

getPathIterator

PathIterator getPathIterator(AffineTransform at)
Возвращает объект-итератор, который проходит по границе Shape и предоставляет доступ к геометрии контура Shape. Если указан необязательный AffineTransform, координаты, возвращаемые в ходе итерации, преобразуются соответствующим образом.

Каждый вызов этого метода возвращает новый объект-итератор PathIterator, который проходит по геометрии объекта Shape независимо от других объектов-итераторов PathIterator, используемых одновременно.

Рекомендуется, но не гарантируется, что объекты, реализующие интерфейс Shape, изолируют итерации, которые находятся в процессе, от любых изменений, которые могут произойти в геометрии исходного объекта во время таких итераций.

Параметры:
at — необязательное AffineTransform, которое применяется к координатам по мере их возвращения в ходе итерации, или null, если требуются не преобразованные координаты
Возвращает:
новый объект-итератор PathIterator, который независимо проходит по геометрии Shape.
С:
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.
С:
1.2

Отправить сообщение об ошибке или предложить улучшение
Для получения дополнительной информации о справочнике API и документации для разработчиков см. документацию Java SE, которая содержит более подробные описания для разработчиков с концептуальными обзорами, определениями терминов, решениями проблем и рабочими примерами кода. Другие версии.
Java является торговой маркой или зарегистрированной торговой маркой Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 США.
Все права защищены. Использование подчиняется условиям лицензии и политике распространения документации.
DRAFT 24-ea+36-Debian-1

© 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/Shape.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API