模块 java.desktop

类 Rectangle2D

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

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

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

自从:
1.2
  • 字段详细信息

    • 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
      参见:
  • 构造方法详细信息

    • Rectangle2D

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

    • 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坐标
      返回:
      true 如果指定的线段与此 Rectangle2D 的内部相交; false否则。
      自从:
      1.2
    • intersectsLine

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

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

      public int outcode(Point2D  p)
      确定指定的 Point2D 相对于此 Rectangle2D 的位置。此方法计算适当掩码值的二进制或,指示对于此 Rectangle2D 的每一侧,指定的 Point2D 是否与此 Rectangle2D 的其余部分位于边缘的同一侧。
      参数:
      p - 指定的 Point2D
      返回:
      所有适当的输出代码的逻辑或。
      自从:
      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()
      返回 ShapegetBounds 方法更高精度和更准确的边界框。请注意,不能保证返回的 Rectangle2D 是包围 Shape 的最小边界框,只能保证 Shape 完全位于指示的 Rectangle2D 内。此方法返回的边界框通常比 getBounds 方法返回的边界框更紧密,并且不会因溢出问题而失败,因为返回值可以是使用双精度值存储尺寸的 Rectangle2D 的实例。

      请注意,definition of insideness 可能导致 shape 定义轮廓上的点可能不被视为包含在返回的 bounds 对象中,但仅在这些点也不被视为包含在原始 shape 中的情况下。

      如果根据 contains(point) 方法 pointshape 内部,那么根据 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 的边界内,如 definition of insideness 所述。
      参数:
      x - 指定要测试的X坐标
      y - 指定待测Y坐标
      返回:
      true 如果指定坐标在 Shape 边界内; false否则。
      自从:
      1.2
    • intersects

      public 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
      参见:
    • contains

      public boolean contains(double x, double y, double w, double h)
      测试 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
      参见:
    • 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 - Rectangle2D 保存 src1src2 的交集结果
      自从:
      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 - Rectangle2D 保存 src1src2 并集的结果
      自从:
      1.2
    • add

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

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

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

      public void add(Point2D  pt)
      添加 Point2D 对象 pt 到这个 Rectangle2D 。生成的 Rectangle2D 是包含原始 Rectangle2D 和指定的 Point2D 的最小 Rectangle2D

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

      参数:
      pt - 新的 Point2D 添加到这个 Rectangle2D
      自从:
      1.2
    • add

      public void add(Rectangle2D  r)
      添加一个 Rectangle2D 对象到这个 Rectangle2D 。生成的 Rectangle2D 是两个 Rectangle2D 对象的并集。
      参数:
      r - 要添加到此 Rectangle2DRectangle2D
      自从:
      1.2
    • getPathIterator

      public PathIterator  getPathIterator(AffineTransform  at)
      返回定义此 Rectangle2D 边界的迭代对象。此类的迭代器是多线程安全的,这意味着此 Rectangle2D 类保证对此 Rectangle2D 对象的几何形状的修改不会影响已在进行中的该几何形状的任何迭代。
      参数:
      at - 一个可选的 AffineTransform 应用于在迭代中返回的坐标,或者 null 如果需要未转换的坐标
      返回:
      PathIterator 对象返回此 Rectangle2D 轮廓的几何形状,一次一个段。
      自从:
      1.2
    • getPathIterator

      public PathIterator  getPathIterator(AffineTransform  at, double flatness)
      返回定义展平 Rectangle2D 边界的迭代对象。由于矩形已经是平面的,flatness 参数将被忽略。此类的迭代器是多线程安全的,这意味着此 Rectangle2D 类保证对此 Rectangle2D 对象的几何形状的修改不会影响已在进行中的该几何形状的任何迭代。
      指定者:
      getPathIterator 在接口 Shape
      重写:
      getPathIterator 在类 RectangularShape
      参数:
      at - 一个可选的 AffineTransform 应用于在迭代中返回的坐标,或者 null 如果需要未转换的坐标
      flatness - 用于逼近曲线段的线段允许偏离原始曲线上任意点的最大距离。由于矩形已经是平面的,flatness 参数将被忽略。
      返回:
      PathIterator 对象返回此 Rectangle2D 轮廓的几何形状,一次一个段。
      自从:
      1.2
    • hashCode

      public int hashCode()
      返回此 Rectangle2D 的哈希码。
      重写:
      hashCode 在类 Object
      返回:
      这个 Rectangle2D 的哈希码。
      自从:
      1.2
      参见:
    • equals

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