Класс 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()
- 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:
getBounds
public Rectangle getBounds()
Rectangle, который полностью включает в себя этот Area. Класс Area попытается вернуть наименьший возможный ограничивающий прямоугольник для Shape. Ограничивающий прямоугольник не будет увеличен, чтобы включить контрольные точки кривых в контуре Shape, но должен плотно прилегать к фактической геометрии контура. Поскольку возвращаемый объект представляет собой ограничивающий прямоугольник с целыми числами, ограничивающий прямоугольник может быть только таким же плотным, как ближайшие целочисленные координаты, охватывающие геометрию Shape.
clone
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
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, как определено в определении принадлежности.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, и поэтому может использоваться, если требуется более точный ответ.- Specified by:
-
containsв интерфейсеShape - Parameters:
-
x- координата X левого верхнего угла указанного прямоугольного участка -
y- координата Y левого верхнего угла указанного прямоугольного участка -
w- ширина указанного прямоугольного участка -
h- высота указанного прямоугольного участка - Returns:
-
true, если внутренняя областьShapeполностью содержит указанный прямоугольный участок;falseв противном случае или еслиShapeсодержит прямоугольный участок, методintersectsвозвращаетtrue, и вычисления включения были бы слишком ресурсоёмкими. - Since:
- 1.2
- See Also:
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:
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:
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:
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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/java/awt/geom/Area.html