Класс 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. |
Методы, объявленные в классе Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Показывает, равен ли этот объект другому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно вследствие вызова 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
- См. также:
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.