java.lang.Object java.awt.geom.Area
Area
对象存储和操作 2 维空间封闭区域的与解析无关的描述。在与其他 Area
对象合并时,Area
对象可以被变换,并可执行各种构造区域几何形状 (Constructive Area Geometry,CAG) 操作。CAG 操作包括对区域进行加
、减
、交
和异或
。有关各种操作的示例,请参阅链接的方法文档。
Area
类实现了 Shape
接口,并提供对所有目标测试和路径迭代设施的完全支持,但 Area
在许多方面比一般化的路径更具体:
Area
对象,就像通过 Graphics2D.fill
方法填充这些路径一样。 Area
轮廓的路径几何形状类似于为了描述同一封闭 2 维区域而构造的路径,但可以使用完全不同的类型和路径段排序来完成路径构造。 Area
时,一些并不总是很明显但值得注意的问题包括:
Shape
中创建一个 Area
导致在 Area
对象中产生一个封闭的轮廓。 Shape
中创建一个 Area
将产生一个空的 Area
。该问题的一个常见示例是:用一条直线生成的 Area
将是空的,因为该直线无法封闭任何区域。一个空的 Area
将不会迭代其 PathIterator
对象中的任何几何形状。 Shape
可以分割成两条(或更多条)子路径,每条子路径都封闭原始路径的非相交部分之一。 Area
可以采用更多路径段来描述相同的几何形状,即使在原始轮廓非常简单和明显时也是如此。正如人们所认识到的那样,Area
类必须在路径上执行的分析可能并不能反映“简单而明显”的概念。
构造方法摘要 | |
---|---|
Area() 创建空区域的默认构造方法。 |
|
Area(Shape s) Area 类可以根据指定的 Shape 对象创建区域几何形状。 |
方法摘要 | |
---|---|
void |
add(Area rhs) 将指定 Area 的形状添加到此 Area 的形状中。 |
Object |
clone() 返回此 Area 对象的精确副本。 |
boolean |
contains(double x, double y) 测试指定坐标是否在 Shape 的边界内。 |
boolean |
contains(double x, double y, double w, double h) 测试 Shape 内部是否完全包含指定矩形区域。 |
boolean |
contains(Point2D p) 测试指定的 Point2D 是否在 Shape 的边界内。 |
boolean |
contains(Rectangle2D r) 测试 Shape 内部是否完全包含指定的 Rectangle2D 。 |
Area |
createTransformedArea(AffineTransform t) 创建一个新 Area 对象,使它与由指定 AffineTransform 变换的 Area 包含相同的几何形状。 |
boolean |
equals(Area other) 测试两个 Area 对象的几何形状是否相等。 |
void |
exclusiveOr(Area rhs) 将此 Area 的形状设置为其当前形状与指定 Area 形状的组合区域,并减去其交集。 |
Rectangle |
getBounds() 返回完全包围此 Area 的边界 Rectangle 。 |
Rectangle2D |
getBounds2D() 返回完全包围此 Area 的高精度边界 Rectangle2D 。 |
PathIterator |
getPathIterator(AffineTransform at) 为此 Area 对象的轮廓创建一个 PathIterator 。 |
PathIterator |
getPathIterator(AffineTransform at, double flatness) 为此 Area 对象的变平轮廓创建 PathIterator 。 |
void |
intersect(Area rhs) 将此 Area 的形状设置为其当前形状与指定 Area 形状的交集。 |
boolean |
intersects(double x, double y, double w, double h) 测试 Shape 内部是否与指定矩形区域的内部相交。 |
boolean |
intersects(Rectangle2D r) 测试 Shape 内部是否与指定 Rectangle2D 内部相交。 |
boolean |
isEmpty() 测试此 Area 对象是否包括其他区域。 |
boolean |
isPolygonal() 测试此 Area 是否完全由直边多边形组成。 |
boolean |
isRectangular() 测试此 Area 的形状是否为矩形。 |
boolean |
isSingular() 测试此 Area 是否由单个封闭子路径组成。 |
void |
reset() 从此 Area 删除所有几何形状,将其恢复为空区域。 |
void |
subtract(Area rhs) 从此 Area 的形状中减去指定 Area 的形状。 |
void |
transform(AffineTransform t) 使用指定的 AffineTransform 变换此 Area 的几何形状。 |
从类 java.lang.Object 继承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public Area()
public Area(Shape s)
Area
类可以根据指定的
Shape
对象创建区域几何形状。如果
Shape
还不是封闭的,则显式地封闭几何形状。由
Shape
的几何形状指定的填充规则(奇偶或缠绕)用于确定得到的封闭区域。
s
- 据以构造区域的
Shape
NullPointerException
- 如果
s
为 null
方法详细信息 |
---|
public void add(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.add(a2); a1(before) + a2 = a1(after) ################ ################ ################ ############## ############## ################ ############ ############ ################ ########## ########## ################ ######## ######## ################ ###### ###### ###### ###### #### #### #### #### ## ## ## ##
rhs
- 将添加到当前形状的
Area
NullPointerException
- 如果
rhs
为 null
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
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
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
public void reset()
Area
删除所有几何形状,将其恢复为空区域。
public boolean isEmpty()
Area
对象是否包括其他区域。
Area
对象表示空区域,则返回
true
;否则返回
false
。
public boolean isPolygonal()
Area
是否完全由直边多边形组成。
Area
全部由线段组成,则返回
true
;否则返回
false
。
public boolean isRectangular()
Area
的形状是否为矩形。
Area
的几何形状是矩形,则返回
true
;否则返回
false
。
public boolean isSingular()
Area
是否由单个封闭子路径组成。如果路径包含 0 个或 1 个子路径,则此方法返回
true
;如果路径包含 1 个以上的子路径,则返回
false
。子路径是根据路径中出现的
SEG_MOVETO
段数来计算的。
Area
由单个基本几何形状组成,则返回
true
;否则返回
false
。
public Rectangle2D getBounds2D()
Area
的高精度边界
Rectangle2D
。
Area 类将试图为 Shape 返回可能的最紧密的边界框。不要填充边界框以包含 Shape 轮廓上的曲线控制点,而应该让边界框紧密地适合轮廓本身的实际几何形状。
Shape
中的
getBounds2D
Area
的边界
Rectangle2D
。
Shape.getBounds()
public Rectangle getBounds()
Area
的边界
Rectangle
。
Area 类将试图为 Shape 返回可能的最紧密的边界框。不要填充边界框以包含 Shape 轮廓上的曲线控制点,而应该让边界框紧密地适合轮廓本身的实际几何形状。因为返回的对象使用整数表示边界框,所以边界框只能是围绕 Shape 几何形状尽可能紧密的整数坐标。
Area
的边界
Rectangle
。
Shape.getBounds2D()
public Object clone()
public boolean equals(Area other)
Area
对象的几何形状是否相等。如果参数为 null,则此方法将返回 false。
other
- 将与此
Area
比较的
Area
true
;否则返回
false
。
public void transform(AffineTransform t)
AffineTransform
变换此
Area
的几何形状。适当地变换几何形状,它将永久更改由此对象定义的封闭区域。
t
- 用于变换区域的变换
NullPointerException
- 如果
t
为 null
public Area createTransformedArea(AffineTransform t)
Area
对象,使它与由指定
AffineTransform
变换的
Area
包含相同的几何形状。此
Area
对象不变。
t
- 用于变换新
Area
的指定
AffineTransform
Area
对象。
NullPointerException
- 如果
t
为 null
public boolean contains(double x, double y)
Shape
的边界内。
x
- 要测试的指定的 X 坐标
y
- 要测试的指定的 Y 坐标
Shape
边界内,则返回
true
;否则返回
false
。
public boolean contains(Point2D p)
Point2D
是否在
Shape
的边界内。
p
- 要测试的指定的
Point2D
Point2D
在
Shape
边界内,则返回
true
;否则返回
false
。
public boolean contains(double x, double y, double w, double h)
Shape
内部是否完全包含指定矩形区域。矩形区域内的所有坐标都必须位于
Shape
中,才可以认为整个矩形区域包含在
Shape
中。
在下列情况下,Shape.contains()
方法允许 Shape
实现谨慎地返回 false
:
intersect
方法返回 true
并且 Shape
是否完全包含矩形区域的代价太高。 Shape
,即使
Shape
包含矩形区域,此方法也可能返回
false
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地执行几何计算,因此可以使用该类。
x
- 指定矩形区域左上角的 X 坐标
y
- 指定矩形区域左上角的 Y 坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
Shape
内部完全包含指定矩形区域,则返回
true
;否则,如果
Shape
包含矩形区域、
intersects
方法返回
true
且执行包含计算代价太高,则返回
false
。
Area
,
Shape.intersects(double, double, double, double)
public boolean contains(Rectangle2D r)
Shape
内部是否完全包含指定的
Rectangle2D
。在下列情况下,
Shape.contains()
方法允许
Shape
实现谨慎地返回
false
:
intersect
方法返回 true
并且 Shape
是否完全包含 Rectangle2D
的代价太高。 Shape
,即使
Shape
包含
Rectangle2D
,此方法也可能返回
false
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地执行几何计算,因此可以使用该类。
r
- 指定的
Rectangle2D
Shape
内部完全包含
Rectangle2D
,则返回
true
;否则,如果
Shape
包含
Rectangle2D
、
intersects
方法返回
true
且执行包含计算代价太高,则返回
false
。
Shape.contains(double, double, double, double)
public boolean intersects(double x, double y, double w, double h)
Shape
内部是否与指定矩形区域的内部相交。如果任何一个点既包含在
Shape
内,又包含在指定矩形区域内,则认为矩形区域与
Shape
相交。
在下列情况下,Shape.intersects()
方法允许 Shape
实现谨慎地返回 true
:
Shape
相交的可能性很大,但是 Shape
,即使矩形区域没有与该
Shape
相交,此方法也可能返回
true
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地计算几何相交,因此可以使用该类。
Shape
中的
intersects
x
- 指定矩形区域左上角的 X 坐标
y
- 指定矩形区域左上角的 Y 坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
Shape
的内部区域与矩形的内部区域相交,或者相交的可能性很大且执行计算的代价太高,则返回
true
;否则返回
false
。
Area
public boolean intersects(Rectangle2D r)
Shape
内部是否与指定
Rectangle2D
内部相交。在下列情况下,
Shape.intersects()
方法允许
Shape
实现谨慎地返回
true
:
Rectangle2D
与 Shape
相交的可能性很大,但是 Shape
,即使
Rectangle2D
没有与该
Shape
相交,此方法也可能返回
true
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地计算几何相交,因此可以使用该类。
Shape
中的
intersects
r
- 指定的
Rectangle2D
Shape
内部与指定
Rectangle2D
内部相交,或者相交的可能性很大且执行计算的代价太高,则返回
true
;否则返回
false
。
Shape.intersects(double, double, double, double)
public PathIterator getPathIterator(AffineTransform at)
Area
对象的轮廓创建一个
PathIterator
。此
Area
对象不变。
Shape
中的
getPathIterator
at
- 一个可选的
AffineTransform
,应用于在迭代中返回的坐标;如果需要未变换的坐标,则为
null
Area
轮廓几何形状的
PathIterator
对象,一次一段。
public PathIterator getPathIterator(AffineTransform at, double flatness)
Area
对象的变平轮廓创建
PathIterator
。迭代器只返回 SEG_MOVETO、SEG_LINETO 和 SEG_CLOSE 点类型所表示的非曲线路径段。此
Area
对象不变。
Shape
中的
getPathIterator
at
- 一个可选的
AffineTransform
,应用于在迭代中返回的坐标;如果需要未变换的坐标,则为
null
flatness
- 在使用连接端点的直线取代分段曲线之前,给定曲线的控制点可以从共线变化的最大值
Area
轮廓几何形状的
PathIterator
对象,一次一段。