Интерфейс 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
См. также:
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)

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

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, а вычисления включения слишком сложны для выполнения.
С:
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

© 1993, 2020, 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/11/docs/api/java.desktop/java/awt/Shape.html

Spec-Zone .ru
спецификации, руководства, описания, API