Класс 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 |
Класс Area создаёт геометрию области на основе указанного объекта Shape. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
add |
Добавляет форму указанного Area к форме этого Area. |
Object |
clone() |
Возвращает точную копию этого объекта Area. |
boolean |
contains |
Проверяет, находятся ли указанные координаты внутри границы Shape согласно определению принадлежности внутренней области. |
boolean |
contains |
Проверяет, полностью ли внутренняя область Shape содержит указанную прямоугольную область. |
boolean |
contains |
Проверяет, находится ли указанный Point2D внутри границы Shape согласно определению принадлежности внутренней области. |
boolean |
contains |
Проверяет, полностью ли внутренняя область Shape содержит указанный Rectangle2D. |
Area |
createTransformedArea |
Создаёт новый объект Area, содержащий ту же геометрию, что и этот Area, преобразованный указанным AffineTransform. |
boolean |
equals |
Проверяет, равна ли геометрия двух объектов Area. |
void |
exclusiveOr |
Задаёт форму этого Area как объединённую область его текущей формы и формы указанного Area за вычетом их пересечения. |
Rectangle |
getBounds() |
Возвращает ограничивающий Rectangle, полностью охватывающий этот Area. |
Rectangle2D |
getBounds2D() |
Возвращает высокоточный ограничивающий Rectangle2D, полностью охватывающий этот Area. |
PathIterator |
getPathIterator |
Создаёт PathIterator для контура этого объекта Area. |
PathIterator |
getPathIterator |
Создаёт PathIterator для аппроксимированного контура этого объекта Area. |
void |
intersect |
Задаёт форму этого Area как пересечение его текущей формы и формы указанного Area. |
boolean |
intersects |
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанной прямоугольной области. |
boolean |
intersects |
Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанного Rectangle2D. |
boolean |
isEmpty() |
Проверяет, ограничивает ли этот объект Area какую-либо область. |
boolean |
isPolygonal() |
Проверяет, состоит ли этот Area исключительно из многоугольной геометрии с прямыми сторонами. |
boolean |
isRectangular() |
Проверяет, имеет ли этот Area прямоугольную форму. |
boolean |
isSingular() |
Проверяет, состоит ли этот Area из одного замкнутого подпути. |
void |
reset() |
Удаляет всю геометрию из этого Area и возвращает его в состояние пустой области. |
void |
subtract |
Вычитает форму указанного Area из формы этого Area. |
void |
transform |
Преобразует геометрию этого Area с помощью указанного AffineTransform. |
Подробное описание конструкторов
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
- См. также:
getBounds
public Rectangle getBounds()
Rectangle, полностью охватывающий этот Area. Класс Area пытается вернуть максимально тесную ограничивающую рамку для Shape. Ограничивающая рамка не расширяется для включения контрольных точек кривых в контуре Shape, но должна плотно охватывать фактическую геометрию самого контура. Поскольку возвращаемый объект представляет ограничивающую рамку целыми числами, она может быть настолько тесной, насколько позволяют ближайшие целочисленные координаты, охватывающие геометрию Shape.
clone
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
public boolean contains(Point2D p)
Point2D внутри границы Shape, как описано в определении принадлежности внутренней области.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
- См. также:
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
- См. также:
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
- См. также:
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
- См. также:
getPathIterator
public PathIterator getPathIterator(AffineTransform at)
- Определено в:
-
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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/java/awt/geom/Area.html