-
- 所有已知实现类:
-
Arc2D,Arc2D.Double,Arc2D.Float,Area,BasicTextUI.BasicCaret,CubicCurve2D,CubicCurve2D.Double,CubicCurve2D.Float,DefaultCaret,Ellipse2D,Ellipse2D.Double,Ellipse2D.Float,GeneralPath,Line2D,Line2D.Double,Line2D.Float,Path2D,Path2D.Double,Path2D.Float,Polygon,QuadCurve2D,QuadCurve2D.Double,QuadCurve2D.Float,Rectangle,Rectangle2D,Rectangle2D.Double,Rectangle2D.Float,RectangularShape,RoundRectangle2D,RoundRectangle2D.Double,RoundRectangle2D.Float
public interface ShapeShape接口提供表示某种形状几何形状的对象的定义。Shape由PathIterator对象描述,其可以表示Shape的轮廓以及用于确定轮廓如何将2D平面划分为内部和外部点的规则。 每个Shape对象提供回调以获取几何的边界框,确定点或矩形是部分还是完全位于Shape的内部,并检索描述Shape轮廓的轨迹路径的PathIterator对象。Definition of insideness:当且仅当在
Shape情况下,该点被认为位于Shape内:- 它完全位于
Shape边界内或 - 它恰好位于
Shape边界上, 并且与增加的X方向上的点紧邻的空间完全位于边界内或 - 它恰好位于一个水平边界段和紧邻点在增大空间
Y方向的边界内。
该
contains种intersects方法考虑内部Shape将它围住,就好像它充满的区域。 这意味着这些方法会将隐藏的形状视为隐式闭合,以确定形状是包含矩形还是与矩形相交,或者形状是否包含点。- 从以下版本开始:
- 1.2
- 另请参见:
-
PathIterator,AffineTransform,FlatteningPathIterator,GeneralPath
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 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。RectanglegetBounds()返回一个整数Rectangle完全包围Shape。Rectangle2DgetBounds2D()返回Shape高精度和更精确的边界框,而不是getBounds方法。PathIteratorgetPathIterator(AffineTransform at)返回迭代器对象,该对象沿Shape边界进行迭代,并提供对Shape轮廓几何的访问。PathIteratorgetPathIterator(AffineTransform at, double flatness)返回迭代器对象,该对象沿Shape边界进行迭代,并提供对Shape轮廓几何体的Shape平视图的访问。booleanintersects(double x, double y, double w, double h)测试Shape的内部是否与指定矩形区域的内部相交。booleanintersects(Rectangle2D r)测试Shape的内部是否与指定的Rectangle2D的内部相交。
-
-
-
方法详细信息
-
getBounds
Rectangle getBounds()
返回一个整数Rectangle完全包围Shape。 请注意,不保证返回的Rectangle是最小的边框包围Shape,只表示Shape完全在指定的范围内Rectangle。 如果Shape溢出整数数据类型的有限范围,则返回的Rectangle也可能无法完全包含Shape。getBounds2D方法通常返回更严格的边界框,因为它具有更强的表示灵活性。请注意, definition of insideness可能导致shape的定义轮廓上的
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。 - 从以下版本开始:
- 1.2
- 另请参见:
-
getBounds2D()
-
getBounds2D
Rectangle2D getBounds2D()
返回Shape高精度和更精确的边界框,而不是getBounds方法。 请注意,不保证返回的Rectangle2D是最小的边框包围Shape,只表示Shape完全在指定的范围内Rectangle2D。 此方法返回的边界框通常比getBounds方法返回的边界框更紧密,并且由于溢出问题而永远不会失败,因为返回值可以是使用双精度值来存储尺寸的Rectangle2D的实例。请注意, definition of insideness可能会导致shape的定义轮廓上的
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。 - 从以下版本开始:
- 1.2
- 另请参见:
-
getBounds()
-
contains
boolean contains(double x, double y)测试指定的坐标是否在Shape的边界内,如 definition of insideness所述 。- 参数
-
x- 要测试的指定X坐标 -
y- 要测试的指定Y坐标 - 结果
-
true如果指定的坐标在Shape边界内; 否则为false。 - 从以下版本开始:
- 1.2
-
contains
boolean contains(Point2D p)
测试指定Point2D是的边界内Shape,如所描述的definition of insideness 。- 参数
-
p- 要测试的指定Point2D - 结果
-
true如果指定Point2D是的边界内Shape;false否则。 - 从以下版本开始:
- 1.2
-
intersects
boolean intersects(double x, double y, double w, double h)测试Shape的内部是否与指定矩形区域的内部相交。 矩形区域被认为是交叉的Shape如果任何点被包含在双方的内部Shape和指定的矩形区域。Shape.intersects()方法允许Shape实现在Shape情况下保守地返回true:- 矩形区域与
Shape交叉的概率很高,但是 - 精确确定这个交叉点的计算非常昂贵。
Shapes这种方法也可能返回true即使矩形区域没有相交Shape。Area类比大多数Shape对象执行更精确的几何交集计算,因此如果需要更精确的答案,则可以使用它。- 参数
-
x- 指定矩形区域左上角的X坐标 -
y- 指定矩形区域左上角的Y坐标 -
w- 指定矩形区域的宽度 -
h- 指定矩形区域的高度 - 结果
-
true如果Shape的内部与矩形区域的内部相交,或者两者都很可能相交并且交叉计算将太昂贵而无法执行; 否则为false。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Area
- 矩形区域与
-
intersects
boolean intersects(Rectangle2D r)
测试Shape的内部是否与指定的Rectangle2D的内部相交。Shape.intersects()方法允许Shape实现在Shape情况下保守地返回true:-
Rectangle2D与Shape相交的概率很高,但是 - 精确确定这个交叉点的计算非常昂贵。
Shapes这种方法也可能返回true即使Rectangle2D不相交Shape。Area类比大多数Shape对象执行更精确的几何交集计算,因此如果需要更精确的答案,则可以使用它。- 参数
-
r- 指定的Rectangle2D - 结果
-
true如果Shape的内部与指定的Rectangle2D的内部相交,或者两者都很可能相交,并且交叉计算将太昂贵而无法执行; 否则为false。 - 从以下版本开始:
- 1.2
- 另请参见:
-
intersects(double, double, double, double)
-
-
contains
boolean contains(double x, double y, double w, double h)测试Shape的内部Shape完全包含指定的矩形区域。 摆在矩形区域内必须将内在于所有的坐标Shape整个矩形区域被认为包含内Shape。Shape.contains()方法允许Shape实现在Shape情况下保守地返回false:-
intersect方法返回true和 - 用于确定
Shape是否完全包含矩形区域的计算非常昂贵。
Shapes即使Shape包含矩形区域,此方法也可能返回false。Area类比大多数Shape对象执行更精确的几何计算,因此如果需要更精确的答案,则可以使用它。- 参数
-
x- 指定矩形区域左上角的X坐标 -
y- 指定矩形区域左上角的Y坐标 -
w- 指定矩形区域的宽度 -
h- 指定矩形区域的高度 - 结果
-
true如果内部Shape完全包含指定矩形区域;false否则,或者,如果Shape包含矩形区域并且intersects方法返回true并且包含计算将太昂贵而无法执行。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Area,intersects(double, double, double, double)
-
-
contains
boolean contains(Rectangle2D r)
测试Shape的内部Shape完全包含指定的Rectangle2D。Shape.contains()方法允许Shape实现在Shape情况下保守地返回false:-
intersect方法返回true和 - 用于确定
Shape是否完全包含Rectangle2D的计算非常昂贵。
Shapes这种方法也可能返回false即使Shape包含Rectangle2D。Area类比大多数Shape对象执行更精确的几何计算,因此如果需要更精确的答案,则可以使用它。- 参数
-
r- 指定的Rectangle2D - 结果
-
true如果内部Shape完全包含Rectangle2D;false否则,或者,如果Shape包含Rectangle2D并且intersects方法返回true并且包含计算将太昂贵而无法执行。 - 从以下版本开始:
- 1.2
- 另请参见:
-
contains(double, double, double, double)
-
-
getPathIterator
PathIterator getPathIterator(AffineTransform at)
返回迭代器对象,该对象沿Shape边界进行迭代,并提供对Shape大纲几何的访问。 如果指定了可选的AffineTransform,则相应地转换迭代中返回的坐标。此方法每次调用返回一个新鲜
PathIterator对象横穿的几何形状Shape从任何其他独立对象PathIterator在使用中在相同的时间对象。建议(但不能保证)实现
Shape接口的对象隔离Shape迭代,这些迭代是在此类迭代期间可能对原始对象的几何体发生的任何更改。- 参数
-
at- 可选的AffineTransform应用于迭代中返回的坐标,如果需要未转换的坐标则null - 结果
-
一个新的
PathIterator对象,它独立地遍历Shape的几何。 - 从以下版本开始:
- 1.2
-
getPathIterator
PathIterator getPathIterator(AffineTransform at, double flatness)
返回迭代器对象,该对象沿Shape边界进行迭代,并提供对Shape轮廓几何体的Shape平视图的访问。迭代器仅返回SEG_MOVETO,SEG_LINETO和SEG_CLOSE点类型。
如果指定了可选的
AffineTransform,则会相应地转换迭代中返回的坐标。弯曲段的细分量由
flatness参数控制,该参数指定未平坦变换曲线上的任何点可以偏离返回的平坦路径段的最大距离。 请注意,可能会默默地施加对展平路径精度的限制,从而导致非常小的展平参数被视为较大的值。 此限制(如果有)由所使用的特定实现定义。每次调用此方法都会返回一个新的
PathIterator对象,该对象独立于同时使用的任何其他PathIterator对象遍历Shape对象几何。建议但不能保证实现
Shape接口的对象隔离Shape迭代,这些迭代是在此类迭代期间可能对原始对象的几何体发生的任何更改。- 参数
-
at- 可选的AffineTransform应用于迭代中返回的坐标,如果需要未转换的坐标则null -
flatness- 允许用于近似弯曲段的线段的最大距离偏离原始曲线上的任何点 - 结果
-
一个新的
PathIterator,它独立地遍历Shape几何图形的平面视图。 - 从以下版本开始:
- 1.2
-
-