- java.lang.Object
-
- java.awt.geom.Area
-
public class Area extends Object implements Shape, Cloneable
Area对象存储和操纵对二维空间的封闭区域的分辨率独立描述。Area对象可以被转化,并且当与其它组合可以执行各种建设性区域几何形状(CAG)操作Area对象。 该CAG操作包括区域addition,subtraction,intersection,并exclusive or。 有关各种操作的示例,请参阅链接方法文档。Area类实现了Shape接口,并提供了对所有命中测试和路径迭代功能的全面支持,但是Area在多种方式中比通用路径更具体:- 只存储封闭的路径和子路径。
Area从未封闭路径构造的对象在构造过程中隐式关闭,就好像这些路径已经被Graphics2D.fill方法填充了Graphics2D.fill。 - 各个存储的子路径的内部都是非空的且不重叠的。 路径在构建过程中被分解为单独的组件非重叠部分,路径的空块被丢弃,然后通过所有后续CAG操作来维护这些非空和不重叠的属性。 不同组件子路径的轮廓可以互相接触,只要它们不交叉,使得它们的封闭区域重叠。
- 描述
Area的轮廓的路径的几何形状类似于构造它的路径,只是它描述了相同的封闭的二维区域,但是可能使用完全不同的类型和路径段的顺序来实现。
Area时并不总是很明显的有趣问题包括:-
Area关闭(打开)Shape创建Shape导致Area对象中的封闭轮廓。 - 从
Shape创建一个Area,它不包含任何区域(即使当“关闭”)生成一个空的Area。 这个问题的一个常见的例子是,从行生成Area将是空的,因为该行不包含任何区域。 空的Area将在其PathIterator对象中不迭代几何。 - 自相交
Shape可以被分成两个(或更多个)子路径,每个子路径包围原始路径的不相交部分之一。 - 即使原始轮廓简单明了,
Area也可能需要更多的路径段来描述相同的几何形状。Area课程必须在道路上进行的分析可能不会反映出人类感觉到的“简单明了”的概念。
- 从以下版本开始:
- 1.2
- 只存储封闭的路径和子路径。
-
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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)为这个Area对象的扁平轮廓创建一个PathIterator。voidintersect(Area rhs)将这个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中包含的区域。// 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独家ORed。 - 异常
-
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实现保守返回false时:-
intersect方法返回true和 - 确定
Shape是否完全包含矩形区域的计算是非常昂贵的。
Shapes这个方法可能会返回false即使Shape包含矩形区域。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实现保守返回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)
为此Area对象的扁平轮廓创建一个PathIterator。 由SEG_MOVETO,SEG_LINETO和SEG_CLOSE点类型表示的未曲线的路径段仅由迭代器返回。 这个Area对象没有变化。- Specified by:
-
getPathIterator在接口Shape - 参数
-
at- 要在迭代中返回时应用于坐标的可选AffineTransform,如果需要未转换的坐标,null -
flatness- 给定曲线的控制点的最大量可以在共线之前变化,而细分曲线由连接终点的直线代替 - 结果
-
PathIterator对象返回此Area的轮廓的几何,一次一个段。 - 从以下版本开始:
- 1.2
-
-