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