Spec-Zone.ru › OpenJDK 27

Класс 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
Модификатор и тип Метод Описание
boolean equals(Object obj)
Показывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, подлежит удалению: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени.

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

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, 2026, 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.

Spec-Zone.ru

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