Класс Area
- Все реализованные интерфейсы:
-
Shape,Cloneable
public class Area extends Object implements Shape, Cloneable
Area хранит и обрабатывает независимое от разрешения описание замкнутой области 2-мерного пространства. Объекты типа Area можно преобразовывать и выполнять различные операции геометрии конструктивного построения областей (CAG), когда они объединены с другими объектами Area. Операции CAG включают добавление области addition, вычитание subtraction, пересечение intersection и исключающее ИЛИ exclusive or. Примеры различных операций см. в документации по соответствующим методам. Класс Area реализует интерфейс Shape и предоставляет полную поддержку всех его средств определения попадания и итерации по траектории, но объект Area более специфичен, чем обобщенная траектория по нескольким причинам:
- Хранятся только замкнутые траектории и подтраектории. Объекты
Area, созданные из незамкнутых траекторий, неявно закрываются во время создания, как если бы эти траектории были заполнены методомGraphics2D.fill. - Внутренности отдельных хранящихся подтраекторий непустые и непересекающиеся. Траектории разбиваются во время создания на отдельные компоненты, непересекающиеся части, пустые фрагменты траектории отбрасываются, а затем эти свойства непустоты и непопересечения сохраняются во всех последующих операциях CAG. Контуры разных подтраекторий могут касаться друг друга, но не должны пересекаться, чтобы их области не перекрывались.
- Геометрия траектории, описывающей контур объекта
Area, похожа на траекторию, из которой она была создана, только в том смысле, что она описывает ту же самую замкнутую 2-мерную область, но может использовать совершенно разные типы и порядок сегментов траектории для этого.
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, используется для определения итоговой закрытой области.- 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для операции исключающего ИЛИ с этим объектом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 попытается вернуть максимально возможную ограничивающую прямоугольную область для формы. Ограничивающая прямоугольная область не будет расширена для включения контрольных точек кривых на контуре формы, но должна плотно прилегать к фактической геометрии контура.
- Specified by:
-
getBounds2Dв интерфейсеShape - Returns:
- ограничивающая прямоугольная область для
Area. - Since:
- 1.2
- See Also:
getBounds
public Rectangle getBounds()
Rectangle, которая полностью охватывает этот объект Area. Класс Area попытается вернуть максимально возможную ограничивающую прямоугольную область для формы. Ограничивающая прямоугольная область не будет расширена для включения контрольных точек кривых на контуре формы, но должна плотно прилегать к фактической геометрии контура. Поскольку возвращаемый объект представляет ограничивающую прямоугольную область с целыми числами, ограничивающая прямоугольная область может быть лишь настолько плотной, насколько это позволяют ближайшие целочисленные координаты, охватывающие геометрию формы.
- Specified by:
-
getBoundsв интерфейсеShape - Returns:
- ограничивающая прямоугольная область для
Area. - Since:
- 1.2
- See Also:
clone
public Object clone()
Area.- Overrides:
-
cloneв классеObject - Returns:
- Созданный клонированный объект
- Since:
- 1.2
- See Also:
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в интерфейсе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
- См. также:
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)
Area. Итератор возвращает только неизогнутые сегменты пути, представленные типами точек SEG_MOVETO, SEG_LINETO и SEG_CLOSE. Сам объект Area не изменяется.- Определяется:
-
getPathIteratorв интерфейсеShape - Параметры:
-
at- необязательное аффинное преобразование, применяемое к координатам во время итерации, или null, если желаемы не преобразованные координаты -
flatness- максимальное отклонение контрольных точек кривой от коллинеарности, после которого кривая разбивается на прямую линию, соединяющую конечные точки - Возвращает:
- объект итератора, возвращающий геометрию контура этого объекта
Area, по одному сегменту за раз. - С:
- 1.2
© 1993, 2023, 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/21/docs/api/java.desktop/java/awt/geom/Area.html