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 。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.