Spec-Zone.ru › OpenJDK 8

Интерфейс 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.

Spec-Zone.ru

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