Класс 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) | Класс |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | add(Area rhs) | Добавляет форму указанной |
Object | clone() | Возвращает точную копию этого объекта |
boolean | contains(double x,
double y) | Проверяет, находятся ли заданные координаты внутри границы |
boolean | contains(double x,
double y,
double w,
double h) | Проверяет, полностью ли внутренняя часть |
boolean | contains(Point2D p) | Проверяет, находится ли указанная |
boolean | contains(Rectangle2D r) | Проверяет, полностью ли внутренняя часть |
Area | createTransformedArea(AffineTransform t) | Создаёт новый объект |
boolean | equals(Area other) | Проверяет, равны ли геометрии двух объектов |
void | exclusiveOr(Area rhs) | Устанавливает форму этого объекта |
Rectangle | getBounds() | Возвращает ограничивающий |
Rectangle2D | getBounds2D() | Возвращает ограничивающий |
PathIterator | getPathIterator(AffineTransform at) | Создаёт итератор |
PathIterator | getPathIterator(AffineTransform at,
double flatness) | Создаёт объект |
void | intersect(Area rhs) | Устанавливает форму этого объекта |
boolean | intersects(double x,
double y,
double w,
double h) | Проверяет, пересекается ли внутренняя часть |
boolean | intersects(Rectangle2D r) | Проверяет, пересекается ли внутренняя часть |
boolean | isEmpty() | Проверяет, содержит ли этот объект |
boolean | isPolygonal() | Проверяет, состоит ли этот объект |
boolean | isRectangular() | Проверяет, имеет ли этот объект |
boolean | isSingular() | Проверяет, состоит ли этот объект |
void | reset() | Удаляет всю геометрию из этого объекта |
void | subtract(Area rhs) | Вычитает форму указанной |
void | transform(AffineTransform t) | Преобразует геометрию этого объекта |
Методы, унаследованные от класса java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Подробное описание конструкторов
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для exclusive OR с этим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 попытается вернуть максимально возможный ограничивающий прямоугольник для фигуры. Ограничивающий прямоугольник не будет расширяться, чтобы включать контрольные точки кривых на контуре фигуры, а должен плотно облегать саму фактическую геометрию контура.
- Определено в:
-
getBounds2Dв интерфейсеShape - Возвращает:
- ограничивающий прямоугольник для
Area. - С момента:
- 1.2
- См. также:
Shape.getBounds()
getBounds
public Rectangle getBounds()
Возвращает ограничивающий Rectangle, который полностью охватывает этот Area.
Класс Area попытается вернуть максимально возможный ограничивающий прямоугольник для фигуры. Ограничивающий прямоугольник не будет расширяться, чтобы включать контрольные точки кривых на контуре фигуры, а должен плотно облегать саму фактическую геометрию контура. Поскольку возвращаемый объект представляет ограничивающий прямоугольник с целыми числами, ограничивающий прямоугольник может быть только таким же плотным, как ближайшие координаты целых чисел, которые охватывают геометрию фигуры.
- Определено в:
-
getBoundsв интерфейсеShape - Возвращает:
- ограничивающий прямоугольник для
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
© 1993, 2020, 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/11/docs/api/java.desktop/java/awt/geom/Area.html