Module java.desktop
Package java.awt.geom

Class Rectangle2D

所有已实现的接口:
Shape, Cloneable
直接已知的子类:
Rectangle, Rectangle2D.Double, Rectangle2D.Float

public abstract class Rectangle2D extends RectangularShape
Rectangle2D类描述了由位置(x,y)和尺寸(w x h)定义的矩形。

这个类只是所有存储2D矩形的对象的抽象超类。坐标的实际存储表示留给子类。

自从:
1.2
  • Field Details

    • OUT_LEFT

      public static final int OUT_LEFT
      指示点位于此Rectangle2D左侧的位掩码。
      自从:
      1.2
      另请参阅:
    • OUT_TOP

      public static final int OUT_TOP
      指示点位于此Rectangle2D上方的位掩码。
      自从:
      1.2
      另请参阅:
    • OUT_RIGHT

      public static final int OUT_RIGHT
      指示点位于此Rectangle2D右侧的位掩码。
      自从:
      1.2
      另请参阅:
    • OUT_BOTTOM

      public static final int OUT_BOTTOM
      指示点位于此Rectangle2D下方的位掩码。
      自从:
      1.2
      另请参阅:
  • Constructor Details

    • Rectangle2D

      protected Rectangle2D()
      这是一个无法直接实例化的抽象类。有特定类型的实现子类可用于实例化,并提供多种格式来存储满足下面各种访问器方法所需信息。
      自从:
      1.2
      另请参阅:
  • Method Details

    • setRect

      public abstract void setRect(double x, double y, double w, double h)
      将此Rectangle2D的位置和大小设置为指定的double值。
      参数:
      x - 此Rectangle2D左上角的X坐标
      y - 此Rectangle2D左上角的Y坐标
      w - 此Rectangle2D的宽度
      h - 此Rectangle2D的高度
      自从:
      1.2
    • setRect

      public void setRect(Rectangle2D r)
      将此Rectangle2D设置为与指定的Rectangle2D相同。
      参数:
      r - 指定的Rectangle2D
      自从:
      1.2
    • intersectsLine

      public boolean intersectsLine(double x1, double y1, double x2, double y2)
      测试指定的线段是否与此Rectangle2D的内部相交。
      参数:
      x1 - 指定线段起点的X坐标
      y1 - 指定线段起点的Y坐标
      x2 - 指定线段终点的X坐标
      y2 - 指定线段终点的Y坐标
      返回:
      如果指定的线段与此Rectangle2D的内部相交,则返回true;否则返回false
      自从:
      1.2
    • intersectsLine

      public boolean intersectsLine(Line2D l)
      测试指定的线段是否与此Rectangle2D的内部相交。
      参数:
      l - 要测试是否与此Rectangle2D的内部相交的指定Line2D
      返回:
      如果指定的Line2D与此Rectangle2D的内部相交,则返回true;否则返回false
      自从:
      1.2
    • outcode

      public abstract int outcode(double x, double y)
      确定指定坐标相对于此Rectangle2D的位置。此方法计算适当的掩码值的二进制OR,指示对于此Rectangle2D的每一边,指定的坐标是否与边的其余部分在同一侧。
      参数:
      x - 指定的X坐标
      y - 指定的Y坐标
      返回:
      所有适当外部代码的逻辑OR。
      自从:
      1.2
      另请参阅:
    • outcode

      public int outcode(Point2D p)
      确定指定的Point2D相对于此Rectangle2D的位置。此方法计算适当的掩码值的二进制OR,指示对于此Rectangle2D的每一边,指定的Point2D是否与边的其余部分在同一侧。
      参数:
      p - 指定的Point2D
      返回:
      所有适当外部代码的逻辑OR。
      自从:
      1.2
      另请参阅:
    • setFrame

      public void setFrame(double x, double y, double w, double h)
      将此Rectangle2D的外部边界的位置和大小设置为指定的矩形值。
      指定者:
      setFrame 在类 RectangularShape
      参数:
      x - 此Rectangle2D的左上角的X坐标
      y - 此Rectangle2D的左上角的Y坐标
      w - 此Rectangle2D的宽度
      h - 此Rectangle2D的高度
      自版本:
      1.2
      参见:
    • getBounds2D

      public Rectangle2D getBounds2D()
      返回一个比getBounds方法更高精度和更准确的Shape的边界框。请注意,返回的Rectangle2D不一定是包围Shape的最小边界框,只是Shape完全位于指定的Rectangle2D内。此方法返回的边界框通常比getBounds方法返回的边界框更紧凑,并且不会因溢出问题而失败,因为返回值可以是使用双精度值存储尺寸的Rectangle2D的实例。

      请注意,内部定义的概念可能导致定义形状的轮廓上的点可能不被认为包含在返回的bounds对象中,但只有在这些点也不被认为包含在原始shape中的情况下。

      如果一个point根据contains(point)方法在shape内部,那么根据boundscontains(point)方法,它必须在返回的Rectangle2D边界对象内部。具体来说:

      shape.contains(p)要求bounds.contains(p)

      如果一个point不在shape内部,则它可能仍然包含在bounds对象中:

      bounds.contains(p)不意味着shape.contains(p)

      返回:
      一个Rectangle2D的实例,它是Shape的高精度边界框。
      自版本:
      1.2
      参见:
    • contains

      public boolean contains(double x, double y)
      测试指定的坐标是否在Shape的边界内,如内部定义所述。
      参数:
      x - 要测试的指定X坐标
      y - 要测试的指定Y坐标
      返回:
      如果指定的坐标在Shape的边界内,则返回true;否则返回false
      自版本:
      1.2
    • intersects

      public boolean intersects(double x, double y, double w, double h)
      测试Shape的内部是否与指定矩形区域的内部相交。如果任何点同时包含在Shape的内部和指定矩形区域内,则认为矩形区域与Shape相交。

      Shape.intersects()方法允许Shape实现在以下情况下保守地返回true

      • 矩形区域和Shape有很高的概率相交,但
      • 准确确定此交集的计算代价过高。
      这意味着对于某些Shapes,即使矩形区域与Shape不相交,此方法可能返回true。与大多数Shape对象相比,Area类执行更准确的几何相交计算,因此如果需要更精确的答案,则可以使用该类。
      参数:
      x - 指定矩形区域左上角的X坐标
      y - 指定矩形区域左上角的Y坐标
      w - 指定矩形区域的宽度
      h - 指定矩形区域的高度
      返回:
      如果Shape的内部和矩形区域的内部相交,或者两者高度可能相交且计算交集的代价过高,则返回true;否则返回false
      自版本:
      1.2
      参见:
    • contains

      public boolean contains(double x, double y, double w, double h)
      测试Shape的内部是否完全包含指定的矩形区域。所有位于矩形区域内部的坐标必须位于整个矩形区域内部才被认为包含在Shape内部。

      Shape.contains()方法允许Shape实现在以下情况下保守地返回false

      • intersect方法返回true
      • 确定Shape是否完全包含矩形区域的计算代价过高。
      这意味着对于某些Shapes,即使intersect方法返回true,并且Shape包含矩形区域,此方法可能返回false。与大多数Shape对象相比,Area类执行更准确的几何计算,因此如果需要更精确的答案,则可以使用该类。
      参数:
      x - 指定矩形区域左上角的X坐标
      y - 指定矩形区域左上角的Y坐标
      w - 指定矩形区域的宽度
      h - 指定矩形区域的高度
      返回:
      如果Shape的内部完全包含指定的矩形区域,则返回true;否则返回false,或者如果Shape包含矩形区域且intersect方法返回true且包含计算代价过高,则返回false
      自版本:
      1.2
      参见:
    • createIntersection

      public abstract Rectangle2D createIntersection(Rectangle2D r)
      返回一个新的Rectangle2D对象,表示此Rectangle2D与指定Rectangle2D的交集。
      参数:
      r - 与此Rectangle2D相交的Rectangle2D
      返回:
      包含在指定Rectangle2D和此Rectangle2D中的最大Rectangle2D
      自版本:
      1.2
    • intersect

      public static void intersect(Rectangle2D src1, Rectangle2D src2, Rectangle2D dest)
      相交指定的源Rectangle2D对象对,并将结果放入指定的目标Rectangle2D对象中。源矩形之一也可以是目标,以避免创建第三个Rectangle2D对象,但在这种情况下,此源矩形的原始点将被此方法覆盖。
      参数:
      src1 - 要相交的一对Rectangle2D对象中的第一个
      src2 - 要相交的一对Rectangle2D对象中的第二个
      dest - 包含src1src2相交结果的Rectangle2D
      自版本:
      1.2
    • createUnion

      public abstract Rectangle2D createUnion(Rectangle2D r)
      返回一个新的Rectangle2D对象,表示此Rectangle2D与指定Rectangle2D的并集。
      参数:
      r - 与此Rectangle2D组合的Rectangle2D
      返回:
      包含指定Rectangle2D和此Rectangle2D的最小Rectangle2D
      自版本:
      1.2
    • union

      public static void union(Rectangle2D src1, Rectangle2D src2, Rectangle2D dest)
      合并一对源Rectangle2D对象,并将结果放入指定的目标Rectangle2D对象中。源矩形之一也可以是目标,以避免创建第三个Rectangle2D对象,但在这种情况下,此源矩形的原始点将被此方法覆盖。
      参数:
      src1 - 要组合的一对Rectangle2D对象中的第一个
      src2 - 要组合的一对Rectangle2D对象中的第二个
      dest - 包含src1src2并集结果的Rectangle2D
      自版本:
      1.2
    • add

      public void add(double newx, double newy)
      将由双精度参数newxnewy指定的点添加到此Rectangle2D中。结果的Rectangle2D是同时包含原始Rectangle2D和指定点的最小Rectangle2D

      添加点后,使用添加的点作为参数调用contains不一定会返回true。对于矩形的右侧或底部边缘上的点,contains方法不会返回true。因此,如果添加的点落在扩大后的矩形的右侧或底部边缘上,则contains对于该点将返回false

      参数:
      newx - 新点的X坐标
      newy - 新点的Y坐标
      自版本:
      1.2
    • add

      public void add(Point2D pt)
      Point2D对象pt添加到此Rectangle2D中。结果Rectangle2D是包含原始Rectangle2D和指定Point2D的最小Rectangle2D

      添加点后,使用添加的点作为参数调用contains方法不一定会返回true。对于矩形的右边缘或底边缘上的点,contains方法不会返回true。因此,如果添加的点落在扩大后的矩形的右边缘或底边缘上,contains对于该点将返回false

      参数:
      pt - 要添加到此Rectangle2D中的新Point2D
      自版本:
      1.2
    • add

      public void add(Rectangle2D r)
      将一个Rectangle2D对象添加到此Rectangle2D中。结果Rectangle2D是两个Rectangle2D对象的并集。
      参数:
      r - 要添加到此Rectangle2D中的Rectangle2D
      自版本:
      1.2
    • getPathIterator

      public PathIterator getPathIterator(AffineTransform at)
      返回定义此Rectangle2D边界的迭代对象。此类的迭代器是多线程安全的,这意味着此Rectangle2D类保证对此Rectangle2D对象的几何形状的修改不会影响已经在进行中的任何几何形状的迭代。
      参数:
      at - 可选的AffineTransform,用于在迭代中返回坐标,如果希望返回未转换的坐标,则为null
      返回:
      返回以一段一段方式返回此Rectangle2D轮廓的几何形状的PathIterator对象。
      自版本:
      1.2
    • getPathIterator

      public PathIterator getPathIterator(AffineTransform at, double flatness)
      返回定义扁平化Rectangle2D边界的迭代对象。由于矩形已经是扁平的,因此忽略flatness参数。此类的迭代器是多线程安全的,这意味着此Rectangle2D类保证对此Rectangle2D对象的几何形状的修改不会影响已经在进行中的任何几何形状的迭代。
      指定者:
      getPathIterator 在接口 Shape
      覆盖:
      getPathIterator 在类 RectangularShape
      参数:
      at - 可选的AffineTransform,用于在迭代中返回坐标,如果希望返回未转换的坐标,则为null
      flatness - 用于近似曲线段的直线段允许偏离原始曲线上任意点的最大距离。由于矩形已经是扁平的,因此忽略flatness参数。
      返回:
      返回以一段一段方式返回此Rectangle2D轮廓的几何形状的PathIterator对象。
      自版本:
      1.2
    • hashCode

      public int hashCode()
      返回此Rectangle2D的哈希码。
      覆盖:
      hashCode 在类 Object
      返回:
      Rectangle2D的哈希码。
      自版本:
      1.2
      参见:
    • equals

      public boolean equals(Object obj)
      确定指定的Object是否等于此Rectangle2D。如果指定的ObjectRectangle2D的实例,并且其位置和大小与此Rectangle2D相同,则指定的Object等于此Rectangle2D
      覆盖:
      equals 在类 Object
      参数:
      obj - 要与此Rectangle2D进行比较的Object
      返回:
      如果objRectangle2D的实例并且具有相同的值,则返回true;否则返回false
      自版本:
      1.2
      参见: