-
- 所有已知实现类:
-
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 Shape
Shape
接口提供表示某种形状几何形状的对象的定义。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
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 boolean
contains(double x, double y)
测试指定的坐标是否在Shape
的边界内,如 definition of insideness所述 。boolean
contains(double x, double y, double w, double h)
测试Shape
的内部Shape
完全包含指定的矩形区域。boolean
contains(Point2D p)
测试指定Point2D
是的边界内Shape
,如所描述的definition of insideness 。boolean
contains(Rectangle2D r)
测试Shape
的内部Shape
完全包含指定的Rectangle2D
。Rectangle
getBounds()
返回一个整数Rectangle
完全包围Shape
。Rectangle2D
getBounds2D()
返回Shape
高精度和更精确的边界框,而不是getBounds
方法。PathIterator
getPathIterator(AffineTransform at)
返回迭代器对象,该对象沿Shape
边界进行迭代,并提供对Shape
轮廓几何的访问。PathIterator
getPathIterator(AffineTransform at, double flatness)
返回迭代器对象,该对象沿Shape
边界进行迭代,并提供对Shape
轮廓几何体的Shape
平视图的访问。boolean
intersects(double x, double y, double w, double h)
测试Shape
的内部是否与指定矩形区域的内部相交。boolean
intersects(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
-
-