|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.awt.geom.Area
public class 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
为 nullpublic 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
为 nullpublic 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
为 nullpublic 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
为 nullpublic 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 几何形状尽可能紧密的整数坐标。
Shape
中的 getBounds
Area
的边界 Rectangle
。Shape.getBounds2D()
public Object clone()
Area
对象的精确副本。
Object
中的 clone
Cloneable
public boolean equals(Area other)
Area
对象的几何形状是否相等。如果参数为 null,则此方法将返回 false。
other
- 将与此 Area
比较的 Area
true
;否则返回 false
。public void transform(AffineTransform t)
AffineTransform
变换此 Area
的几何形状。适当地变换几何形状,它将永久更改由此对象定义的封闭区域。
t
- 用于变换区域的变换
NullPointerException
- 如果 t
为 nullpublic Area createTransformedArea(AffineTransform t)
Area
对象,使它与由指定 AffineTransform
变换的 Area
包含相同的几何形状。此 Area
对象不变。
t
- 用于变换新 Area
的指定 AffineTransform
Area
对象。
NullPointerException
- 如果 t
为 nullpublic boolean contains(double x, double y)
Shape
的边界内。
Shape
中的 contains
x
- 要测试的指定的 X 坐标y
- 要测试的指定的 Y 坐标
Shape
边界内,则返回 true
;否则返回 false
。public boolean contains(Point2D p)
Point2D
是否在 Shape
的边界内。
Shape
中的 contains
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
对象更为准确地执行几何计算,因此可以使用该类。
Shape
中的 contains
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
对象更为准确地执行几何计算,因此可以使用该类。
Shape
中的 contains
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
对象,一次一段。
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。