Spec-Zone.ru › OpenJDK 25

Класс 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.

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

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

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

Area

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

Area

public Area(Shape s)
Класс Area создает геометрию области из указанного объекта Shape. Геометрия явно замыкается, если Shape еще не замкнута. Для определения результирующей заключенной области используется правило заполнения (четно-нечетное или ненулевого числа обходов), заданное геометрией Shape.
Параметры:
s — Shape, из которого создается область
Исключения:
NullPointerException — если s равно null
Начиная с:
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)

    ################     ################     ################
    ##############         ##############     ################
    ############             ############     ################
    ##########                 ##########     ################
    ########                     ########     ################
    ######                         ######     ######    ######
    ####                             ####     ####        ####
    ##                                 ##     ##            ##
Параметры:
rhs — Area, добавляемое к текущей фигуре
Исключения:
NullPointerException — если rhs равно null
Начиная с:
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)

    ################     ################
    ##############         ##############     ##
    ############             ############     ####
    ##########                 ##########     ######
    ########                     ########     ########
    ######                         ######     ######
    ####                             ####     ####
    ##                                 ##     ##
Параметры:
rhs — Area, вычитаемое из текущей фигуры
Исключения:
NullPointerException — если rhs равно null
Начиная с:
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)

    ################     ################     ################
    ##############         ##############       ############
    ############             ############         ########
    ##########                 ##########           ####
    ########                     ########
    ######                         ######
    ####                             ####
    ##                                 ##
Параметры:
rhs — Area, с которым пересекается это Area
Исключения:
NullPointerException — если rhs равно null
Начиная с:
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)

    ################     ################
    ##############         ##############     ##            ##
    ############             ############     ####        ####
    ##########                 ##########     ######    ######
    ########                     ########     ################
    ######                         ######     ######    ######
    ####                             ####     ####        ####
    ##                                 ##     ##            ##
Параметры:
rhs — Area, с которым выполняется исключающее ИЛИ для этого Area.
Исключения:
NullPointerException — если rhs равно null
Начиная с:
1.2

reset

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

isEmpty

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

isPolygonal

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

isRectangular

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

isSingular

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

getBounds2D

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

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

Определено в:
getBounds2D в интерфейсе Shape
Возвращает:
ограничивающий Rectangle2D для Area.
Начиная с:
1.2
См. также:
  • Shape.getBounds()

getBounds

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

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

Определено в:
getBounds в интерфейсе Shape
Возвращает:
ограничивающий Rectangle для Area.
Начиная с:
1.2
См. также:
  • Shape.getBounds2D()

clone

public Object clone()
Возвращает точную копию этого объекта Area.
Переопределяет:
clone в классе Object
Возвращает:
Созданный объект-клон
Начиная с:
1.2
См. также:
  • Cloneable

equals

public boolean equals(Area other)
Проверяет, равны ли геометрии двух объектов Area. Этот метод возвращает false, если аргумент равен null.
Параметры:
other — Area для сравнения с этим Area
Возвращает:
true, если геометрии равны; в противном случае — false.
Начиная с:
1.2

transform

public void transform(AffineTransform t)
Преобразует геометрию этого Area с помощью указанного AffineTransform. Геометрия преобразуется на месте, что приводит к постоянному изменению области, заключенной этим объектом.
Параметры:
t — преобразование, используемое для преобразования области
Исключения:
NullPointerException — если t равно null
Начиная с:
1.2

createTransformedArea

public Area createTransformedArea(AffineTransform t)
Создает новый объект Area, содержащий ту же геометрию, что и этот Area, преобразованный с помощью указанного AffineTransform. Этот объект Area остается неизменным.
Параметры:
t — указанный AffineTransform, используемый для преобразования нового Area
Возвращает:
новый объект Area, представляющий преобразованную геометрию.
Исключения:
NullPointerException — если t равно null
Начиная с:
1.2

contains

public boolean contains(double x, double y)
Проверяет, находятся ли указанные координаты внутри границы Shape, как описано в определении принадлежности внутренней области.
Определено в:
contains в интерфейсе Shape
Параметры:
x — указанная координата X для проверки
y — указанная координата Y для проверки
Возвращает:
true, если указанные координаты находятся внутри границы Shape; в противном случае — false.
Начиная с:
1.2

contains

public boolean contains(Point2D p)
Проверяет, находится ли указанная точка Point2D внутри границы Shape, как описано в определении принадлежности внутренней области.
Определено в:
contains в интерфейсе Shape
Параметры:
p — указанная точка Point2D для проверки
Возвращает:
true, если указанная точка Point2D находится внутри границы Shape; в противном случае — false.
Начиная с:
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, поэтому его можно использовать, если требуется более точный ответ.
Определено в:
contains в интерфейсе Shape
Параметры:
x — координата X верхнего левого угла указанной прямоугольной области
y — координата Y верхнего левого угла указанной прямоугольной области
w — ширина указанной прямоугольной области
h — высота указанной прямоугольной области
Возвращает:
true, если внутренняя область Shape полностью содержит указанную прямоугольную область; в противном случае — false, а также если Shape содержит прямоугольную область, метод intersects возвращает true и вычисление принадлежности требует чрезмерных затрат.
Начиная с:
1.2
См. также:
  • 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, поэтому его можно использовать, если требуется более точный ответ.
Определено в:
contains в интерфейсе Shape
Параметры:
r — указанный Rectangle2D
Возвращает:
true, если внутренняя область Shape полностью содержит Rectangle2D; в противном случае — false, а также если Shape содержит Rectangle2D, метод intersects возвращает true и вычисление принадлежности требует чрезмерных затрат.
Начиная с:
1.2
См. также:
  • 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, поэтому его можно использовать, если требуется более точный ответ.
Определено в:
intersects в интерфейсе Shape
Параметры:
x — координата X верхнего левого угла указанной прямоугольной области
y — координата Y верхнего левого угла указанной прямоугольной области
w — ширина указанной прямоугольной области
h — высота указанной прямоугольной области
Возвращает:
true, если внутренняя область Shape пересекается с внутренней областью прямоугольника либо обе области с высокой вероятностью пересекаются, а вычисления пересечения требуют чрезмерных затрат; в противном случае — false.
Начиная с:
1.2
См. также:
  • Area

intersects

public boolean intersects(Rectangle2D r)
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанного Rectangle2D. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true в следующих случаях:
  • существует высокая вероятность пересечения Rectangle2D и Shape, но
  • точные вычисления пересечения требуют чрезмерных затрат.
Это означает, что для некоторых Shapes этот метод может вернуть true, даже если Rectangle2D не пересекается с Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape, поэтому его можно использовать, если требуется более точный ответ.
Определено в:
intersects в интерфейсе Shape
Параметры:
r — указанный Rectangle2D
Возвращает:
true, если внутренняя область Shape пересекается с внутренней областью указанного Rectangle2D либо обе области с высокой вероятностью пересекаются, а вычисления пересечения требуют чрезмерных затрат; в противном случае — false.
Начиная с:
1.2
См. также:
  • 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

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

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/geom/Area.html

Spec-Zone.ru

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