|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.awt
接口 Shape
- 所有已知实现类:
- 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, 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
对象。
内部定义:当且仅当以下条件成立时,才认为某个点位于 Shape
内:
- 该点完全位于
Shape
边界内,或者 - 该点恰好位于
Shape
边界上,并且X
轴正方向上紧邻该点的空间完全处于边界之内,或者 - 该点恰好在水平边界分段上,并且
Y
轴正方向上紧邻该点的空间完全处于边界之内。
contains
和 intersects
方法将 Shape
内部视为可以填充的封闭区域。这意味着为了确定某个 shape 是否包含矩形或与矩形相交,或者确定某个 shape 是否包含一个点,这些方法将隐式地认为未闭合的 shape 是闭合的。
方法摘要 | |
---|---|
boolean |
contains(double x, double y) 测试指定坐标是否在 Shape 的边界内。 |
boolean |
contains(double x, double y, double w, double h) 测试 Shape 内部是否完全包含指定矩形区域。 |
boolean |
contains(Point2D p) 测试指定的 Point2D 是否在 Shape 的边界内。 |
boolean |
contains(Rectangle2D r) 测试 Shape 内部是否完全包含指定的 Rectangle2D 。 |
Rectangle |
getBounds() 返回一个完全包围 Shape 的整型 Rectangle 。 |
Rectangle2D |
getBounds2D() 返回一个高精度的、比 getBounds 方法更准确的 Shape 边界框。 |
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 内部相交。 |
方法详细信息 |
---|
getBounds
Rectangle getBounds()
-
返回一个完全包围
Shape
的整型Rectangle
。注意,不保证返回的Rectangle
是包围Shape
的最小边界框,只保证Shape
完全位于指示的Rectangle
中。如果Shape
超出了整数数据类型的有效范围,则返回的Rectangle
也可能不完全包围Shape
。getBounds2D
方法由于在表示形式上具有更大的灵活性,所以通常返回更紧密的边界框。 -
- 返回:
-
完全包围
Shape
的整型Rectangle
。 - 另请参见:
-
getBounds2D()
getBounds2D
Rectangle2D getBounds2D()
-
返回一个高精度的、比
getBounds
方法更准确的Shape
边界框。注意,不保证返回的Rectangle2D
是包围Shape
的最小边界框,只保证Shape
完全位于指示的Rectangle2D
中。此方法返回的边界框通常比getBounds
方法返回的更紧密,而且永远不会因为溢出问题而出错,因为返回值可以是一个使用双精度值存储尺寸的Rectangle2D
实例。 -
- 返回:
-
一个
Rectangle2D
实例,它是Shape
的高精度边界框。 - 另请参见:
-
getBounds()
contains
boolean contains(double x, double y)
-
测试指定坐标是否在
Shape
的边界内。 -
- 参数:
-
x
- 指定的 x 坐标 -
y
- 指定的 y 坐标 - 返回:
-
如果指定坐标在
Shape
边界内,则返回true
;否则返回false
。
contains
boolean contains(Point2D p)
-
测试指定的
Point2D
是否在Shape
的边界内。 -
- 参数:
-
p
- 指定的Point2D
- 返回:
-
如果指定的
Point2D
在Shape
边界内,则返回true
;否则返回false
。
intersects
boolean intersects(double x, double y, double w, double h)
-
测试
Shape
内部是否与指定矩形区域的内部相交。如果任何一个点既包含在Shape
内,又包含在指定矩形区域内,则认为矩形区域与Shape
相交。在下列情况下,此方法可能会谨慎地返回
true
:- 矩形区域与
Shape
相交的可能性很大,但是 - 精确确定相交的计算代价太高。
Shape
相交,此方法也可能返回true
。如果需要更精确的答案,可以使用Area
类来更为准确地计算与任何Shape
对象的几何相交。 - 矩形区域与
-
- 参数:
-
x
- 指定矩形区域的 x 坐标 -
y
- 指定矩形区域的 y 坐标 -
w
- 指定矩形区域的宽度 -
h
- 指定矩形区域的高度 - 返回:
-
如果
Shape
的内部区域与矩形的内部区域相交,或者相交的可能性很大且执行计算的代价太高,则返回true
;否则返回false
。 - 另请参见:
-
Area
intersects
boolean intersects(Rectangle2D r)
-
测试
Shape
内部是否与指定Rectangle2D
内部相交。在下列情况下,此方法可能会谨慎地返回true
:Rectangle2D
与Shape
相交的可能性很大,但是- 精确确定相交的计算代价太高。
Rectangle2D
没有与Shape
相交,此方法也可能返回true
。 -
- 参数:
-
r
- 指定的Rectangle2D
- 返回:
-
如果
Shape
内部与指定Rectangle2D
内部相交,或者相交的可能性很大且执行计算的代价太高,则返回true
;否则返回false
。 - 另请参见:
-
intersects(double, double, double, double)
contains
boolean contains(double x, double y, double w, double h)
-
测试
Shape
内部是否完全包含指定矩形区域。矩形区域内的所有坐标都必须位于Shape
中,才可以认为整个矩形区域包含在Shape
中。在下列情况下,此方法可能会谨慎地返回
false
:intersect
方法返回true
并且- 计算
Shape
是否完全包含矩形区域的代价太高。
Shape
包含矩形区域,此方法也可能返回false
。如果需要更精确的答案,可以使用Area
类来更为准确地计算与任何Shape
对象的几何相交。 -
- 参数:
-
x
- 指定矩形区域的 x 坐标 -
y
- 指定矩形区域的 y 坐标 -
w
- 指定矩形区域的宽度 -
h
- 指定矩形区域的高度 - 返回:
-
如果
Shape
内部完全包含指定矩形区域,则返回true
;否则,如果Shape
包含矩形区域、intersects
方法返回true
且执行包含计算代价太高,则返回false
。 - 另请参见:
-
Area
,intersects(double, double, double, double)