所有类


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 轴正方向上紧邻该点的空间完全处于边界之内。

containsintersects 方法将 Shape 内部视为可以填充的封闭区域。这意味着为了确定某个 shape 是否包含矩形或与矩形相交,或者确定某个 shape 是否包含一个点,这些方法将隐式地认为未闭合的 shape 是闭合的。

另请参见:
PathIterator, AffineTransform, FlatteningPathIterator, GeneralPath

方法摘要
 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 也可能不完全包围 ShapegetBounds2D 方法由于在表示形式上具有更大的灵活性,所以通常返回更紧密的边界框。

返回:
完全包围 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
返回:
如果指定的 Point2DShape 边界内,则返回 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
  • Rectangle2DShape 相交的可能性很大,但是
  • 精确确定相交的计算代价太高。
这意味着即使 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)

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部