public interface Shape
Shape
界面提供了表示某种形式几何形状的对象的定义。
该Shape
由描述PathIterator
对象,它可以表达的轮廓Shape
以及用于确定所述轮廓如何将所述2D平面成内部和外部点的规则。
每个Shape
对象提供回调以获取几何的边界框,确定点或矩形部分或完全在Shape
的内部,并检索PathIterator
Shape
轮廓的轨迹路径的PathIterator
对象。
Definition of insideness:一个点被认为在一个Shape
如果且仅当:
Shape
边界或 Shape
边界和紧邻在增加的时刻的空间X
方向是完全的边界内或 Y
方向的边界内。 contains
和intersects
方法考虑到一个Shape
的内部是它被包围的区域,就像它被填充一样。 这意味着这些方法认为未封闭形状被隐式关闭,以便确定形状是否包含或相交矩形,或者形状是否包含点。
PathIterator
, AffineTransform
, FlatteningPathIterator
, GeneralPath
Modifier and Type | Method and Description |
---|---|
boolean |
contains(double x, double y)
测试指定坐标的对象的边界内
Shape ,如所描述的
definition of insideness 。
|
boolean |
contains(double x, double y, double w, double h)
测试
Shape 的内部是否包含指定的矩形区域。
|
boolean |
contains(Point2D p)
测试指定 Point2D 是的边界内Shape ,如所描述的definition of insideness 。
|
boolean |
contains(Rectangle2D r)
测试
Shape 的内部
Shape 全部包含指定的
Rectangle2D 。
|
Rectangle |
getBounds()
返回一个整数 Rectangle 完全包围Shape 。
|
Rectangle2D |
getBounds2D()
Shape的
Shape 比
getBounds 方法更高精度和更精确的边界框。
|
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()
Rectangle
完全包围Shape
。
需要注意的是没有保证返回Rectangle
是最小的边框包围Shape
,只表示Shape
完全在指定的范围内Rectangle
。
如果Shape
溢出整数数据类型的有限范围,返回的Rectangle
也可能无法完全包围Shape
。
getBounds2D
方法通常返回更严格的边界框,因为它在表示方面具有更大的灵活性。
需要注意的是definition of insideness可能会导致出现对的定义轮廓点的情况下shape
可能不被认为包含在返回bounds
对象,但只有在这些点也未审议了原有的情况下shape
。
如果point
是内部shape
根据contains(point)
方法,那么它必须是内部返回Rectangle
界限根据对象contains(point)
所述的方法bounds
。 特别:
shape.contains(x,y)
要求bounds.contains(x,y)
如果一个point
不在shape
,那么它可能仍然包含在bounds
对象中:
bounds.contains(x,y)
并不表示shape.contains(x,y)
Rectangle
完全封闭了
Shape
。
getBounds2D()
Rectangle2D getBounds2D()
Shape
比getBounds
方法更高精度和更准确的边界框。
需要注意的是没有保证返回Rectangle2D
是最小的边框包围Shape
,只表示Shape
完全在指定的范围内Rectangle2D
。
通过此方法返回的边界框通常比通过返回的更紧密getBounds
方法,而且永远不会因为溢出问题,因为返回值可以是实例Rectangle2D
一个使用双精度值存储尺寸。
需要注意的是definition of insideness可能会导致出现对的定义轮廓点的情况下shape
可能不被认为包含在返回bounds
对象,但只有在这些点也未审议了原有的情况下shape
。
如果point
是内部shape
根据contains(point)
方法,那么它必须是内部返回Rectangle2D
界限根据对象contains(point)
所述的方法bounds
。 特别:
shape.contains(p)
要求bounds.contains(p)
如果point
不在shape
,那么它可能仍然包含在bounds
对象中:
bounds.contains(p)
并不表示shape.contains(p)
Rectangle2D
那是一个高精度边界框
Shape
。
getBounds()
boolean contains(double x, double y)
Shape
,如所描述的
definition of insideness 。
x
- 要测试的指定X坐标
y
- 要测试的指定Y坐标
true
如果指定的坐标是在Shape
边界内;
false
否则。
boolean contains(Point2D p)
Point2D
是的边界内Shape
,如所描述的definition of insideness 。
p
- 要测试的指定的
Point2D
true
如果指定Point2D
是的边界内Shape
;
false
否则。
boolean intersects(double x, double y, double w, double h)
Shape
相交的指定矩形区域的内部。
矩形区域被认为是交叉的Shape
如果任何点被包含在双方的内部Shape
和指定的矩形区域。
该Shape.intersects()
方法允许Shape
实现谨慎地返回true
时:
Shape
相交,但是 Shapes
这种方法也可能返回true
即使矩形区域没有相交Shape
。
所述Area
类执行几何相交的更精确的计算比大多数Shape
可以,如果需要更精确的答案被使用的对象,因此。
x
- 指定矩形区域左上角的X坐标
y
- 指定矩形区域左上角的Y坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
true
如果Shape
的内部和矩形区域的内部相交,或者很可能相交,并且交叉点计算将太昂贵,不能执行;
false
否则。
Area
boolean intersects(Rectangle2D r)
Shape
相交指定的内部Rectangle2D
。
Shape.intersects()
方法允许一个Shape
实现保守返回true
时:
Rectangle2D
和Shape
相交的Shape
很高,但是 Shapes
这种方法也可能返回true
即使Rectangle2D
不相交Shape
。
所述Area
类执行几何相交的更精确的计算比大多数Shape
可以,如果需要更精确的答案被使用的对象,因此。
r
- 指定的
Rectangle2D
true
如果内部Shape
和指定的内部Rectangle2D
相交,或两者均是高度可能相交及交叉点计算。将执行太贵;
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
完全包含矩形区域的代价太高。 Shapes
即使Shape
包含矩形区域,此方法也可能返回false
。
所述Area
类比大多数执行更精确的几何计算Shape
对象,因此可以在需要更精确的答案一起使用。
x
- 指定矩形区域左上角的X坐标
y
- 指定矩形区域左上角的Y坐标
w
- 指定矩形区域的宽度
h
- 指定矩形区域的高度
true
如果内部Shape
完全包含指定矩形区域;
false
否则或如果Shape
包含矩形区域,并且intersects
方法返回true
并且遏制计算将太昂贵执行。
Area
, intersects(double, double, double, double)
boolean contains(Rectangle2D r)
Shape
的内部Shape
全部包含指定的Rectangle2D
。
Shape.contains()
方法允许一个Shape
实现保守返回false
当:
intersect
方法返回true
和 Shape
完全包含Rectangle2D
的代价太高。 Shapes
这种方法可能会返回false
即使Shape
包含Rectangle2D
。
所述Area
类比大多数执行更精确的几何计算Shape
对象,因此可以在需要更精确的答案一起使用。
r
- 指定的
Rectangle2D
true
如果内部的Shape
完全包含Rectangle2D
;
false
否则或如果Shape
包含Rectangle2D
和intersects
方法返回true
并且包含计算将太昂贵执行。
contains(double, double, double, double)
PathIterator getPathIterator(AffineTransform at)
Shape
边界进行迭代的迭代器对象,并提供对Shape
大纲的几何形状的访问。
如果指定了可选的AffineTransform
,则相应地转换迭代中返回的坐标。
每次调用此方法将返回一个新鲜的PathIterator
对象,该对象可以独立于同时使用的任何其他PathIterator
对象Shape
对象的几何。
建议但不能保证实现Shape
接口的对象隔离正在进行的迭代,这些迭代可能是在这种迭代期间原始对象的几何可能发生的任何更改。
at
- 要在迭代中返回时应用于
at
的可选
AffineTransform
,如果需要未转换的
null
,则为null
PathIterator
对象,它独立地遍历的几何形状
Shape
。
PathIterator getPathIterator(AffineTransform at, double flatness)
Shape
边界进行迭代的迭代器对象,并提供对Shape
轮廓几何体的平坦化视图的访问。
只有SEG_MOVETO,SEG_LINETO和SEG_CLOSE点类型由迭代器返回。
如果指定了可选的AffineTransform,则相应地AffineTransform
迭代中返回的坐标。
曲线段的细分量由flatness
参数控制,该参数指定未平坦变换曲线上的任何点可能偏离返回的平坦化路径段的最大距离。 注意,平坦化路径的精度的限制可能会被默认地施加,导致非常小的平坦化参数被视为较大的值。 这个限制(如果有的话)是由所使用的特定实现来定义的。
每次调用此方法将返回一个新鲜的PathIterator
对象,该对象与所使用的任何其他PathIterator
对象同时Shape
对象几何。
建议但不能保证实现Shape
接口的对象隔离在此类迭代期间原始对象的几何可能发生的任何更改的迭代。
at
- 要在迭代中返回时应用于
at
的可选
AffineTransform
,如果需要未转换的
null
,则为null
flatness
- 用于近似曲线段的线段的最大距离允许偏离原始曲线上的任何点
PathIterator
独立地横穿的几何形状的平面视图
Shape
。