-
- 所有已知实现类:
-
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边界上,紧邻X方向的点的空间完全在边界内或 - 它恰好在水平边界段上, 并且在增加的
Y方向上紧邻该点的空间在边界内。
contains和intersects方法考虑到一个Shape的内部是它被包围的区域,就像它被填充一样。 这意味着这些方法认为未封闭的形状是隐式关闭的,以便确定形状是否包含或相交矩形,或者形状是否包含点。- 从以下版本开始:
- 1.2
- 另请参见:
-
PathIterator,AffineTransform,FlatteningPathIterator,GeneralPath
-
-
方法摘要
所有方法 接口方法 抽象方法 Modifier and Type 方法 描述 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轮廓几何体的平坦化视图的访问。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()
比getBounds方法返回Shape高精度和更准确的边界框。 请注意,不保证返回的Rectangle2D是封闭的最小边界框Shape,只表示Shape完全在指定的范围内Rectangle2D。 此方法返回的边界框通常比getBounds方法返回的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实现保守返回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实现保守地返回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实现保守地返回false当:-
intersect方法返回true和 - 确定
Shape是否完全包含矩形区域的计算是非常昂贵的。
Shapes这种方法也可能返回false即使Shape包含矩形区域。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实现保守返回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接口的对象隔离在这样的迭代过程中可能发生的原始对象的几何的任何更改的迭代。- 参数
-
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
-
-