- java.lang.Object
-
- java.awt.geom.Area
-
public class Area extends Object implements Shape, Cloneable
Area对象存储和操作二维空间的封闭区域的与分辨率无关的描述。Area对象可以转换,并且可以在与其他Area对象组合时执行各种构造区域几何(CAG)操作。 该CAG操作包括区域addition,subtraction,intersection和exclusive or。 有关各种操作的示例,请参阅链接的方法文档。Area类实现了Shape接口,并为其所有命中测试和路径迭代工具提供了全面支持,但Area在许多方面比通用路径更具体:- 仅存储封闭路径和子路径。
Area闭合路径构造的Area对象在构造期间隐式关闭,就好像这些路径已由Graphics2D.fill方法填充。 - 各个存储的子路径的内部都是非空的且不重叠的。 在构造期间将路径分解成单独的组件非重叠部分,丢弃路径的空片段,然后通过所有后续CAG操作维护这些非空和非重叠属性。 不同组件子路径的轮廓可以彼此接触,只要它们不交叉以使它们的封闭区域重叠。
- 描述
Area轮廓的路径的几何形状类似于构造它的路径,因为它描述了相同的封闭二维区域,但可以使用完全不同的类型和路径段的顺序来实现。
Area时并不总是显而易见的有趣问题包括:-
Area闭合(打开)Shape创建Shape导致Area对象中的闭合轮廓。 - 从
Shape创建Area,其中不包含任何区域(即使“关闭”)会产生空Area。 此问题的一个常见示例是,从一行生成Area将为空,因为该行不包含任何区域。 空的Area将在其PathIterator对象中不迭代任何几何体。 - 自交叉
Shape可以分成两个(或更多个)子路径,每个子路径包围原始路径的一个非交叉部分。 - 即使原始轮廓简单明了,
Area也可以采用更多路径段来描述相同的几何形状。Area类必须在路径上执行的分析可能不会反映出与人类感知的“简单和明显”相同的概念。
- 从以下版本开始:
- 1.2
- 仅存储封闭路径和子路径。
-
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 voidadd(Area rhs)添加指定的形状Area这个形状Area。Objectclone()返回此Area对象的精确副本。booleancontains(double x, double y)测试指定的坐标是否在Shape的边界内,如 definition of insideness所述 。booleancontains(double x, double y, double w, double h)测试Shape的内部Shape完全包含指定的矩形区域。booleancontains(Point2D p)测试指定Point2D是的边界内Shape,如所描述的definition of insideness 。booleancontains(Rectangle2D r)测试Shape的内部Shape完全包含指定的Rectangle2D。AreacreateTransformedArea(AffineTransform t)创建一个新的Area对象,该对象包含与由指定的AffineTransform转换的Area相同的几何。booleanequals(Area other)测试两个Area对象的几何是否相等。voidexclusiveOr(Area rhs)将此Area的形状设置为其当前形状和指定的Area的形状的组合区域,减去它们的交点。RectanglegetBounds()返回边界Rectangle完全包围此Area。Rectangle2DgetBounds2D()返回一个高精度的边界Rectangle2D完全包围此Area。PathIteratorgetPathIterator(AffineTransform at)为此Area对象的轮廓创建一个PathIterator。PathIteratorgetPathIterator(AffineTransform at, double flatness)创建PathIterator此的扁平轮廓Area对象。voidintersect(Area rhs)将此Area的形状设置为其当前形状与指定的Area的形状的Area。booleanintersects(double x, double y, double w, double h)测试Shape的内部是否与指定矩形区域的内部相交。booleanintersects(Rectangle2D r)测试Shape的内部是否与指定的Rectangle2D的内部相交。booleanisEmpty()测试此Area对象是否包含任何区域。booleanisPolygonal()测试此Area是否完全由直边多边形几何体组成。booleanisRectangular()测试这个Area是否为矩形。booleanisSingular()测试此Area是否由单个关闭的子路径组成。voidreset()从此Area删除所有几何体并将其还原到空白区域。voidsubtract(Area rhs)减去指定的形状Area从这个形状Area。voidtransform(AffineTransform t)使用指定的AffineTransform转换此Area的几何图形 。
-
-
-
构造方法详细信息
-
Area
public Area()
默认构造函数,它创建一个空区域。- 从以下版本开始:
- 1.2
-
Area
public Area(Shape s)
- 参数
-
s- 构建该区域的Shape - 异常
-
NullPointerException- 如果s为空 - 从以下版本开始:
- 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为空 - 从以下版本开始:
- 1.2
-
subtract
public void subtract(Area rhs)
减去指定的形状Area从这个形状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为空 - 从以下版本开始:
- 1.2
-
intersect
public void intersect(Area rhs)
将此Area的形状设置为其当前形状与指定的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为空 - 从以下版本开始:
- 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独家Area。 - 异常
-
NullPointerException- 如果rhs为空 - 从以下版本开始:
- 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()
- 结果
-
true如果Area由单个基本几何体组成; 否则为false。 - 从以下版本开始:
- 1.2
-
getBounds2D
public Rectangle2D getBounds2D()
返回一个高精度的边界Rectangle2D完全包围此Area。Area类将尝试返回Shape可能的最紧密的边界框。 边界框不会被填充以包含Shape轮廓中的曲线控制点,但应紧密适合轮廓本身的实际几何形状。
- Specified by:
-
getBounds2D在界面Shape - 结果
-
Rectangle2D的边界Area。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Shape.getBounds()
-
getBounds
public Rectangle getBounds()
返回边界Rectangle完全包围此Area。Area类将尝试返回Shape可能的最紧密的边界框。 边界框不会被填充以包含Shape轮廓中的曲线控制点,但应紧密适合轮廓本身的实际几何形状。 由于返回的对象表示带有整数的边界框,因此边界框只能与包含Shape几何体的最近整数坐标一样紧密。
- Specified by:
-
getBounds接口Shape - 结果
-
Rectangle为Area。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Shape.getBounds2D()
-
clone
public Object clone()
返回此Area对象的精确副本。
-
equals
public boolean equals(Area other)
测试两个Area对象的几何是否相等。 如果参数为null,则此方法将返回false。- 参数
-
other-该Area被比作此Area - 结果
-
true如果两个几何相等; 否则为false。 - 从以下版本开始:
- 1.2
-
transform
public void transform(AffineTransform t)
使用指定的AffineTransform转换此Area的几何图形 。 几何体将在适当位置进行转换,从而永久性地更改此对象定义的封闭区域。- 参数
-
t- 用于转换区域的转换 - 异常
-
NullPointerException- 如果t为空 - 从以下版本开始:
- 1.2
-
createTransformedArea
public Area createTransformedArea(AffineTransform t)
创建一个新的Area对象,该对象包含与由指定的AffineTransform转换的Area相同的几何。 此Area对象未更改。- 参数
-
t-指定AffineTransform用于变换新Area - 结果
-
表示变换几何的新
Area对象。 - 异常
-
NullPointerException- 如果t为空 - 从以下版本开始:
- 1.2
-
contains
public boolean contains(double x, double y)测试指定的坐标是否在Shape的边界内,如 definition of insideness所述 。
-
contains
public boolean contains(Point2D p)
测试指定Point2D是的边界内Shape,如所描述的definition of insideness 。
-
contains
public boolean contains(double x, double y, double w, double h)测试Shape的内部Shape完全包含指定的矩形区域。 摆在矩形区域内必须将内在于所有的坐标Shape整个矩形区域被认为包含内Shape。Shape.contains()方法允许Shape实现在Shape情况下保守地返回false:-
intersect方法返回true和 - 用于确定
Shape是否完全包含矩形区域的计算非常昂贵。
Shapes即使Shape包含矩形区域,此方法也可能返回false。Area类比大多数Shape对象执行更精确的几何计算,因此如果需要更精确的答案,则可以使用它。- Specified by:
-
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的内部Shape完全包含指定的Rectangle2D。Shape.contains()方法允许Shape实施保守地返回false:-
intersect方法返回true和 - 用于确定
Shape是否完全包含Rectangle2D的计算非常昂贵。
Shapes这种方法也可能返回false即使Shape包含Rectangle2D。Area类比大多数Shape对象执行更精确的几何计算,因此如果需要更精确的答案,则可以使用它。- Specified by:
-
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实施在Shape情况下保守地返回true:- 矩形区域与
Shape交叉的概率很高,但是 - 精确确定这个交叉点的计算非常昂贵。
Shapes这种方法也可能返回true即使矩形区域没有相交Shape。Area类比大多数Shape对象执行更精确的几何交集计算,因此如果需要更精确的答案,则可以使用它。- Specified by:
-
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对象执行更精确的几何交集计算,因此如果需要更精确的答案,则可以使用它。- Specified by:
-
intersects接口Shape - 参数
-
r- 指定的Rectangle2D - 结果
-
true如果Shape的内部与指定的Rectangle2D的内部相交,或者两者都很有可能相交并且交叉计算将太昂贵而无法执行; 否则为false。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Shape.intersects(double, double, double, double)
-
-
getPathIterator
public PathIterator getPathIterator(AffineTransform at)
为此Area对象的轮廓创建一个PathIterator。 此Area对象未更改。- Specified by:
-
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对象未更改。- Specified by:
-
getPathIterator接口Shape - 参数
-
at- 可选的AffineTransform应用于迭代中返回的坐标,如果需要未转换的坐标则null -
flatness- 在将细分曲线替换为连接端点的直线之前,给定曲线的控制点的最大量可以flatness线变化 - 结果
-
PathIterator对象,返回此Area轮廓的几何,一次一个段。 - 从以下版本开始:
- 1.2
-
-