Spec-Zone.ru › OpenJDK 24

Класс Area

java.lang.Object
java.awt.geom.Area
Все реализуемые интерфейсы:
Shape, Cloneable
public class Area extends Object implements Shape, Cloneable
Объект класса Area хранит и обрабатывает независимое от разрешения описание замкнутой области двумерного пространства. Объекты Area могут преобразовываться и выполнять различные операции конструктивной геометрии областей (CAG) при объединении с другими объектами Area. Операции CAG включают добавление области addition, вычитание subtraction, пересечение intersection и исключающее ИЛИ exclusive or. Примеры различных операций см. в документации связанных методов.

Класс Area реализует интерфейс Shape и обеспечивает полную поддержку всех его средств проверки попадания и итерации по траекториям, но объект Area более специфичен, чем обобщённая траектория по ряду аспектов:

  • Хранятся только замкнутые траектории и подтраектории. Объекты Area, построенные из незамкнутых траекторий, неявно закрываются во время построения так, как будто эти траектории были заполнены методом Graphics2D.fill.
  • Внутренности отдельных хранимых подтраекторий непусты и неперекрываются. Траектории декомпозируются во время построения на отдельные компоненты, неперекрывающиеся части, пустые участки траектории отбрасываются, а затем эти свойства непустоты и неперекрываемости сохраняются во всех последующих операциях CAG. Контуры различных подтраекторий могут касаться друг друга, но не пересекаться так, чтобы их области перекрывались.
  • Геометрия траектории, описывающей контур Area, напоминает траекторию, из которой она была построена только тем, что она описывает ту же замкнутую двумерную область, но может использовать совершенно разные типы и порядок сегментов траектории для этого.
Интересные вопросы, которые не всегда очевидны при использовании объектов Area:
  • Создание Area из незамкнутой (открытой) Shape приводит к замкнутому контуру в объекте Area.
  • Создание Area из Shape, не заключающей в себе никакой области (даже при "закрытии"), создаёт пустой Area. Типичный пример этой проблемы заключается в том, что создание Area из линии будет пустым, поскольку линия не заключает в себе никакой области. Пустой Area не будет итерировать геометрию в своих объектах PathIterator.
  • Самопересекающаяся Shape может быть разделена на две (или более) подтраектории, каждая из которых заключает в себе одну из непересекающихся частей исходной траектории.
  • Area может потребовать больше сегментов траектории для описания той же геометрии, даже если исходный контур прост и очевиден. Анализ, который должен выполнить класс Area над траекторией, может не отражать те же понятия «простоты и очевидности», что и человек.
С момента:
1.2

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

Конструктор Описание
Area()
Конструктор по умолчанию, который создаёт пустую область.
Area(Shape s)
Класс Area создаёт геометрию области из указанного объекта Shape.

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

Модификатор и тип Метод Описание
void add(Area rhs)
Добавляет форму указанного Area к форме этого Area.
Object clone()
Возвращает точную копию этого объекта Area.
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.
Area createTransformedArea(AffineTransform t)
Создаёт новый объект Area, содержащий такую же геометрию, как и этот Area, преобразованный указанным AffineTransform.
boolean equals(Area other)
Проверяет, равны ли геометрии двух объектов Area.
void exclusiveOr(Area rhs)
Устанавливает форму этого Area как объединённую область его текущей формы и формы указанного Area, за вычетом их пересечения.
Rectangle getBounds()
Возвращает ограничительный прямоугольник Rectangle, полностью охватывающий этот Area.
Rectangle2D getBounds2D()
Возвращает ограничительный прямоугольник Rectangle2D высокой точности, полностью охватывающий этот Area.
PathIterator getPathIterator(AffineTransform at)
Создаёт PathIterator для контура этого объекта Area.
PathIterator getPathIterator(AffineTransform at, double flatness)
Создаёт PathIterator для сглаженного контура этого объекта Area.
void intersect(Area rhs)
Устанавливает форму этого Area в пересечение его текущей формы и формы указанного Area.
boolean intersects(double x, double y, double w, double h)
Проверяет, пересекается ли внутренняя часть Shape с внутренней частью указанной прямоугольной области.
boolean intersects(Rectangle2D r)
Проверяет, пересекается ли внутренняя часть Shape с внутренней частью указанного Rectangle2D.
boolean isEmpty()
Проверяет, заключает ли этот объект Area в себе какую-либо область.
boolean isPolygonal()
Проверяет, состоит ли этот Area целиком из геометрии прямоугольных полигонов с прямыми сторонами.
boolean isRectangular()
Проверяет, имеет ли этот Area прямоугольную форму.
boolean isSingular()
Проверяет, состоит ли этот Area из одной замкнутой подтраектории.
void reset()
Удаляет всю геометрию из этого Area и восстанавливает его в пустую область.
void subtract(Area rhs)
Вычитает форму указанного Area из формы этого Area.
void transform(AffineTransform t)
Преобразует геометрию этого Area с помощью указанного AffineTransform.

Методы, объявленные в классе java.lang.Object

equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

Area

public Area()
Конструктор по умолчанию, создающий пустую область.
Since:
1.2

Area

public Area(Shape s)
Класс Area создаёт геометрию области из указанного объекта Shape. Геометрия явным образом закрывается, если Shape ещё не закрыта. Правило заполнения (чёт-нечёт или обход контура), определённое геометрией Shape, используется для определения полученной замкнутой области.
Parameters:
s - Shape, из которого строится область
Throws:
NullPointerException - если s равно null
Since:
1.2

Подробное описание методов

add

public void add(Area rhs)
Добавляет форму указанной Area к форме этого Area. Результирующая форма этого Area будет включать объединение обеих форм, или все области, содержавшиеся в этой или указанной Area.
     // Example:
     Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
     Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
     a1.add(a2);

        a1(before)     +         a2         =     a1(after)

     ################     ################     ################
     ##############         ##############     ################
     ############             ############     ################
     ##########                 ##########     ################
     ########                     ########     ################
     ######                         ######     ######    ######
     ####                             ####     ####        ####
     ##                                 ##     ##            ##
 
Parameters:
rhs - Area, добавляемая к текущей форме
Throws:
NullPointerException - если rhs равно null
Since:
1.2

subtract

public void subtract(Area rhs)
Вычитает форму указанной Area из формы этого Area. Результирующая форма этого Area будет включать области, содержавшиеся только в этом Area и не в указанной Area.
     // Example:
     Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
     Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
     a1.subtract(a2);

        a1(before)     -         a2         =     a1(after)

     ################     ################
     ##############         ##############     ##
     ############             ############     ####
     ##########                 ##########     ######
     ########                     ########     ########
     ######                         ######     ######
     ####                             ####     ####
     ##                                 ##     ##
 
Parameters:
rhs - Area, вычитаемый из текущей формы
Throws:
NullPointerException - если rhs равно null
Since:
1.2

intersect

public void intersect(Area rhs)
Устанавливает форму этого Area в пересечение его текущей формы и формы указанного Area. Результирующая форма этого Area будет включать только области, содержащиеся как в этом Area, так и в указанном Area.
     // Example:
     Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
     Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
     a1.intersect(a2);

      a1(before)   intersect     a2         =     a1(after)

     ################     ################     ################
     ##############         ##############       ############
     ############             ############         ########
     ##########                 ##########           ####
     ########                     ########
     ######                         ######
     ####                             ####
     ##                                 ##
 
Parameters:
rhs - Area, пересекающийся с этим Area
Throws:
NullPointerException - если rhs равно null
Since:
1.2

exclusiveOr

public void exclusiveOr(Area rhs)
Устанавливает форму этого Area как объединённую область его текущей формы и формы указанного Area, минус их пересечение. Результирующая форма этого Area будет включать только области, содержащиеся либо в этом Area, либо в указанном Area, но не в обоих.
     // Example:
     Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
     Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
     a1.exclusiveOr(a2);

        a1(before)    xor        a2         =     a1(after)

     ################     ################
     ##############         ##############     ##            ##
     ############             ############     ####        ####
     ##########                 ##########     ######    ######
     ########                     ########     ################
     ######                         ######     ######    ######
     ####                             ####     ####        ####
     ##                                 ##     ##            ##
 
Parameters:
rhs - Area, XOR'ящийся с этим Area.
Throws:
NullPointerException - если rhs равно null
Since:
1.2

reset

public void reset()
Удаляет всю геометрию из этого Area и восстанавливает его до пустой области.
Since:
1.2

isEmpty

public boolean isEmpty()
Проверяет, содержит ли этот объект Area какую-либо область.
Returns:
true, если этот объект Area представляет пустую область; false в противном случае.
Since:
1.2

isPolygonal

public boolean isPolygonal()
Проверяет, состоит ли этот Area целиком из геометрии прямолинейных многоугольников.
Returns:
true, если геометрия этого Area состоит целиком из отрезков прямых; false в противном случае.
Since:
1.2

isRectangular

public boolean isRectangular()
Проверяет, имеет ли этот Area прямоугольную форму.
Returns:
true, если геометрия этого Area имеет прямоугольную форму; false в противном случае.
Since:
1.2

isSingular

public boolean isSingular()
Проверяет, состоит ли этот Area из одного замкнутого подконтура. Этот метод возвращает true, если путь содержит 0 или 1 подконтур, или false, если путь содержит более 1 подконтура. Подконтуры подсчитываются по количеству сегментов SEG_MOVETO в пути.
Returns:
true, если Area состоит из одной базовой геометрии; false в противном случае.
Since:
1.2

getBounds2D

public Rectangle2D getBounds2D()
Возвращает высокоточное ограничивающее Rectangle2D, которое полностью включает в себя этот Area.

Класс Area попытается вернуть наименьший возможный ограничивающий прямоугольник для Shape. Ограничивающий прямоугольник не будет увеличен, чтобы включить контрольные точки кривых в контуре Shape, но должен плотно прилегать к фактической геометрии контура.

Specified by:
getBounds2D в интерфейсе Shape
Returns:
ограничивающий Rectangle2D для Area.
Since:
1.2
See Also:
  • Shape.getBounds()

getBounds

public Rectangle getBounds()
Возвращает ограничивающий Rectangle, который полностью включает в себя этот Area.

Класс Area попытается вернуть наименьший возможный ограничивающий прямоугольник для Shape. Ограничивающий прямоугольник не будет увеличен, чтобы включить контрольные точки кривых в контуре Shape, но должен плотно прилегать к фактической геометрии контура. Поскольку возвращаемый объект представляет собой ограничивающий прямоугольник с целыми числами, ограничивающий прямоугольник может быть только таким же плотным, как ближайшие целочисленные координаты, охватывающие геометрию Shape.

Specified by:
getBounds в интерфейсе Shape
Returns:
ограничивающий Rectangle для Area.
Since:
1.2
See Also:
  • Shape.getBounds2D()

clone

public Object clone()
Возвращает точную копию объекта Area.
Overrides:
clone в классе Object
Returns:
Созданный клонированный объект
Since:
1.2
See Also:
  • Cloneable

equals

public boolean equals(Area other)
Проверяет, равны ли геометрии двух объектов Area. Этот метод вернёт false, если аргумент равен null.
Parameters:
other - Area, сравниваемый с этим Area
Returns:
true, если две геометрии равны; false в противном случае.
Since:
1.2

transform

public void transform(AffineTransform t)
Преобразует геометрию этого Area с помощью указанного AffineTransform. Геометрия преобразуется на месте, что постоянно изменяет замкнутую область, определённую этим объектом.
Parameters:
t - преобразование, используемое для преобразования области
Throws:
NullPointerException - если t равно null
Since:
1.2
END_OF_DOCUMENT_MARKER

createTransformedArea

public Area createTransformedArea(AffineTransform t)
Создаёт новый объект Area, содержащий ту же геометрию, что и этот Area, преобразованный указанным AffineTransform. Сам объект Area при этом не изменяется.
Parameters:
t - указанный AffineTransform для преобразования нового Area
Returns:
новый объект Area, представляющий преобразованную геометрию.
Throws:
NullPointerException - если t равно null
Since:
1.2

contains

public boolean contains(double x, double y)
Проверяет, находятся ли указанные координаты внутри границ Shape, как определено в определении принадлежности.
Specified by:
contains в интерфейсе Shape
Parameters:
x - указанная координата X для проверки
y - указанная координата Y для проверки
Returns:
true, если указанные координаты находятся внутри границ Shape; false в противном случае.
Since:
1.2

contains

public boolean contains(Point2D p)
Проверяет, находится ли указанная Point2D внутри границ Shape, как определено в определении принадлежности.
Specified by:
contains в интерфейсе Shape
Parameters:
p - указанная Point2D для проверки
Returns:
true, если указанная Point2D находится внутри границ Shape; false в противном случае.
Since:
1.2

contains

public 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, и поэтому может использоваться, если требуется более точный ответ.
Specified by:
contains в интерфейсе Shape
Parameters:
x - координата X левого верхнего угла указанного прямоугольного участка
y - координата Y левого верхнего угла указанного прямоугольного участка
w - ширина указанного прямоугольного участка
h - высота указанного прямоугольного участка
Returns:
true, если внутренняя область Shape полностью содержит указанный прямоугольный участок; false в противном случае или если Shape содержит прямоугольный участок, метод intersects возвращает true, и вычисления включения были бы слишком ресурсоёмкими.
Since:
1.2
See Also:
  • Area
  • Shape.intersects(double, double, double, double)

contains

public boolean contains(Rectangle2D r)
Проверяет, полностью ли внутренняя область Shape содержит указанный Rectangle2D. Метод Shape.contains() позволяет реализации Shape консервативно возвращать false, когда:
  • метод intersect возвращает true и
  • вычисления для определения того, полностью ли Shape содержит Rectangle2D, являются чрезмерно ресурсоёмкими.
Это означает, что для некоторых Shapes этот метод может вернуть false, даже если Shape содержит Rectangle2D. Класс Area выполняет более точные геометрические вычисления, чем большинство объектов Shape, и поэтому может использоваться, если требуется более точный ответ.
Specified by:
contains в интерфейсе Shape
Parameters:
r - Указанный Rectangle2D
Returns:
true, если внутренняя область Shape полностью содержит Rectangle2D; false в противном случае или если Shape содержит Rectangle2D, и метод intersects возвращает true, а вычисления включения слишком ресурсоёмки.
Since:
1.2
See Also:
  • Shape.contains(double, double, double, double)

intersects

public boolean intersects(double x, double y, double w, double h)
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанного прямоугольного участка. Прямоугольный участок считается пересекающим Shape, если любая точка содержится как во внутренней области Shape, так и в указанном прямоугольном участке.

Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true, когда:

  • существует высокая вероятность пересечения прямоугольного участка и Shape, но
  • вычисления для точного определения этого пересечения являются чрезмерно ресурсоёмкими.
Это означает, что для некоторых Shapes этот метод может вернуть true, даже если прямоугольный участок не пересекает Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, и поэтому может использоваться, если требуется более точный ответ.
Specified by:
intersects в интерфейсе Shape
Parameters:
x - координата X левого верхнего угла указанного прямоугольного участка
y - координата Y левого верхнего угла указанного прямоугольного участка
w - ширина указанного прямоугольного участка
h - высота указанного прямоугольного участка
Returns:
true, если внутренние области Shape и прямоугольного участка пересекаются или, если пересечение высоко вероятно, а вычисления слишком ресурсоёмки; false в противном случае.
Since:
1.2
See Also:
  • Area

intersects

public boolean intersects(Rectangle2D r)
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанного Rectangle2D. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true, когда:
  • существует высокая вероятность пересечения Rectangle2D и Shape, но
  • вычисления для точного определения этого пересечения являются чрезмерно ресурсоёмкими.
Это означает, что для некоторых Shapes этот метод может вернуть true, даже если Rectangle2D не пересекает Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, и поэтому может использоваться, если требуется более точный ответ.
Specified by:
intersects в интерфейсе Shape
Parameters:
r - указанный Rectangle2D
Returns:
true, если внутренние области Shape и указанного Rectangle2D пересекаются или, если пересечение высоко вероятно, а вычисления слишком ресурсоёмки; false в противном случае.
Since:
1.2
See Also:
  • Shape.intersects(double, double, double, double)

getPathIterator

public PathIterator getPathIterator(AffineTransform at)
Создаёт объект PathIterator для контура этого объекта Area. Сам объект Area не изменяется.
Определено в:
getPathIterator в интерфейсе Shape
Параметры:
at - необязательное AffineTransform, которое будет применяться к координатам по мере их возвращения в итерации, или null, если желательны не преобразованные координаты
Возвращает:
объект PathIterator, который возвращает геометрию контура этого объекта Area, по одному сегменту за раз.
С:
1.2

getPathIterator

public PathIterator getPathIterator(AffineTransform at, double flatness)
Создаёт объект PathIterator для сглаженного контура этого объекта Area. Итератор возвращает только сегменты пути без кривых, представленные типами точек SEG_MOVETO, SEG_LINETO и SEG_CLOSE. Объект Area не изменяется.
Определено в:
getPathIterator в интерфейсе Shape
Параметры:
at - необязательное AffineTransform, которое будет применяться к координатам по мере их возвращения в итерации, или null, если желательны не преобразованные координаты
flatness - максимальное отклонение контрольных точек для данной кривой от коллинеарности, прежде чем подчинённая кривая заменяется прямой линией, соединяющей конечные точки
Возвращает:
объект PathIterator, который возвращает геометрию контура этого объекта Area, по одному сегменту за раз.
С:
1.2

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

Spec-Zone.ru

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