public interface Shape
Shape
接口提供了表示一些几何形状的对象的定义。Shape
是由 PathIterator
对象描述的,它可以表示 Shape
的轮廓以及确定该轮廓如何将 2D 平面划分成内点和外点的规则。每个 Shape
对象都提供回调,以获取几何形状的边框,确定点或矩形是部分还是全部位于 Shape
内部,并检索一个描述 Shape
轮廓的轨迹路径的 PathIterator
对象。
内部定义:当且仅当以下条件成立时,才认为某个点位于 Shape
内:
Shape
边界内,或者 Shape
边界上,并且 X
轴正方向上紧邻该点的空间完全处于边界之内,或者 Y
轴正方向上紧邻该点的空间完全处于边界之内。 contains
和 intersects
方法将 Shape
内部视为可以填充的封闭区域。这意味着为了确定某个 shape 是否包含矩形或与矩形相交,或者确定某个 shape 是否包含一个点,这些方法将隐式地认为未闭合的 shape 是闭合的。
PathIterator
,
AffineTransform
,
FlatteningPathIterator
,
GeneralPath
方法摘要 | |
---|---|
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 。 |
Rectangle |
getBounds() 返回一个完全包围 Shape 的整型 Rectangle 。 |
Rectangle2D |
getBounds2D() 返回一个高精度的、比 getBounds 方法更准确的 Shape 边界框。 |
PathIterator |
getPathIterator(AffineTransform at) 返回一个沿着 Shape 边界迭代并提供对 Shape 轮廓几何形状的访问的迭代器对象。 |
PathIterator |
getPathIterator(AffineTransform at, double flatness) 返回一个沿着 Shape 边界迭代并提供对 Shape 轮廓几何形状的平面视图访问的迭代器对象。 |
boolean |
intersects(double x, double y, double w, double h) 测试 Shape 内部是否与指定矩形区域的内部相交。 |
boolean |
intersects(Rectangle2D r) 测试 Shape 内部是否与指定 Rectangle2D 内部相交。 |
方法详细信息 |
---|
Rectangle getBounds()
Shape
的整型
Rectangle
。注意,不保证返回的
Rectangle
是包围
Shape
的最小边界框,只保证
Shape
完全位于指示的
Rectangle
中。如果
Shape
超出了整数数据类型的有效范围,则返回的
Rectangle
也可能不完全包围
Shape
。
getBounds2D
方法由于在表示形式上具有更大的灵活性,所以通常返回更紧密的边界框。
Shape
的整型
Rectangle
。
getBounds2D()
Rectangle2D getBounds2D()
getBounds
方法更准确的
Shape
边界框。注意,不保证返回的
Rectangle2D
是包围
Shape
的最小边界框,只保证
Shape
完全位于指示的
Rectangle2D
中。此方法返回的边界框通常比
getBounds
方法返回的更紧密,而且永远不会因为溢出问题而出错,因为返回值可以是一个使用双精度值存储尺寸的
Rectangle2D
实例。
Rectangle2D
实例,它是
Shape
的高精度边界框。
getBounds()
boolean contains(double x, double y)
Shape
的边界内。
x
- 要测试的指定的 X 坐标
y
- 要测试的指定的 Y 坐标
Shape
边界内,则返回
true
;否则返回
false
。
boolean contains(Point2D p)
Point2D
是否在
Shape
的边界内。
p
- 要测试的指定的
Point2D
Point2D
在
Shape
边界内,则返回
true
;否则返回
false
。
boolean intersects(double x, double y, double w, double h)
Shape
内部是否与指定矩形区域的内部相交。如果任何一个点既包含在
Shape
内,又包含在指定矩形区域内,则认为矩形区域与
Shape
相交。
在下列情况下,Shape.intersects()
方法允许 Shape
实现谨慎地返回 true
:
Shape
相交的可能性很大,但是 Shape
,即使矩形区域没有与该
Shape
相交,此方法也可能返回
true
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地计算几何相交,因此可以使用该类。
x
- 指定矩形区域左上角的 X 坐标
y
- 指定矩形区域左上角的 Y 坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
Shape
的内部区域与矩形的内部区域相交,或者相交的可能性很大且执行计算的代价太高,则返回
true
;否则返回
false
。
Area
boolean intersects(Rectangle2D r)
Shape
内部是否与指定
Rectangle2D
内部相交。在下列情况下,
Shape.intersects()
方法允许
Shape
实现谨慎地返回
true
:
Rectangle2D
与 Shape
相交的可能性很大,但是 Shape
,即使
Rectangle2D
没有与该
Shape
相交,此方法也可能返回
true
。如果需要更精确的答案,由于
Area
类比大多数
Shape
对象更为准确地计算几何相交,因此可以使用该类。
r
- 指定的
Rectangle2D
Shape
内部与指定
Rectangle2D
内部相交,或者相交的可能性很大且执行计算的代价太高,则返回
true
;否则返回
false
。
intersects(double, double, double, double)
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
,
intersects(double, double, double, double)
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
。
contains(double, double, double, double)
PathIterator getPathIterator(AffineTransform at)
Shape
边界迭代并提供对
Shape
轮廓几何形状的访问的迭代器对象。如果指定一个可选
AffineTransform
,则相应地转换迭代中返回的坐标。
每次调用此方法都会返回一个最新的、遍历 Shape
对象几何形状的 PathIterator
对象,该对象独立于其他所有同时使用的 PathIterator
对象。
建议但不保证实现 Shape
接口的对象将进行中的迭代与该迭代期间可能对原始对象几何形状所做的任何更改隔离开来。
at
- 一个可选的
AffineTransform
,用于在迭代中返回的坐标,如果需要未转换的坐标,则返回
null
Shape
的几何形状的
PathIterator
对象。
PathIterator getPathIterator(AffineTransform at, double flatness)
Shape
边界迭代并提供对
Shape
轮廓几何形状的平面视图访问的迭代器对象。
迭代器只返回 SEG_MOVETO、SEG_LINETO 和 SEG_CLOSE 点类型。
如果指定一个可选 AffineTransform
,则相应地转换迭代中返回的坐标。
flatness
参数控制曲线段分段的数量,指定转换的不平曲线上任一点能够偏离返回的变平路径段的最大距离。注意,变平路径的精度限制可能稍微受到影响,使非常小的变平参数作为较大的值来处理。如果有这样的限制,那么该限制是由使用的特定实现定义的。
每次调用此方法都会返回一个最新的、遍历 Shape
对象几何形状的 PathIterator
对象,该对象独立于其他所有同时使用的 PathIterator
对象。
建议但不保证实现 Shape
接口的对象将进行中的迭代与该迭代期间可能对原始对象几何形状所做的任何更改隔离开来。
at
- 一个可选
AffineTransform
,用于在迭代中返回的坐标,如果需要未转换的坐标,则返回
null
flatness
- 用来近似曲线段的直线段偏离原始曲线上任一点的最大距离
Shape
几何形状的平面视图的
PathIterator
。