模块 java.desktop

接口 PathIterator

所有已知的实现类:
FlatteningPathIterator

public interface PathIterator
PathIterator 接口为实现 Shape 接口的对象提供了一种机制,通过允许调用者一次检索该边界的路径一段来返回其边界的几何形状。此接口允许这些对象通过使用一阶到三阶贝塞尔曲线(直线和二次或三次贝塞尔样条)一次检索其边界的路径。

可以通过使用“MOVETO”段来表示多个子路径,以在几何图形中创建一个不连续点,以从一个子路径的末尾移动到下一个子路径的开头。

每个子路径都可以手动关闭,方法是在与该子路径的开始“MOVETO”段相同的坐标上结束子路径中的最后一段,或者使用“CLOSE”段从最后一个点追加一条线段回到第一个点。请注意,手动关闭轮廓而不是使用“CLOSE”段来关闭路径可能会导致在子路径的端点使用不同的线条样式装饰。例如,如果遇到“CLOSE”段,BasicStroke 对象使用线“JOIN”装饰连接第一个点和最后一个点,而简单地在与开始坐标相同的坐标上结束路径会导致线“CAP”装饰用在末端。

参见:
  • 字段摘要

    字段
    修饰符和类型
    Field
    描述
    static final int
    段类型常量,指定前面的子路径应该通过追加一条线段回到与最近的 SEG_MOVETO 对应的点来关闭。
    static final int
    一组 3 个点的线段类型常量,指定从最近指定的点开始绘制的三次参数曲线。
    static final int
    点的线段类型常量,指定从最近指定的点开始绘制的直线的终点。
    static final int
    指定新子路径起始位置的点的段类型常量。
    static final int
    点对的线段类型常数,指定从最近指定的点绘制二次参数曲线。
    static final int
    缠绕规则常数,用于指定确定路径内部的奇偶规则。
    static final int
    缠绕规则常数,用于指定确定路径内部的非零规则。
  • 方法总结

    修饰符和类型
    方法
    描述
    int
    currentSegment(double[] coords)
    返回迭代中当前路径段的坐标和类型。
    int
    currentSegment(float[] coords)
    返回迭代中当前路径段的坐标和类型。
    int
    返回用于确定路径内部的缠绕规则。
    boolean
    测试迭代是否完成。
    void
    next()
    只要在该方向上有更多点,就将迭代器沿主要遍历方向向前移动到路径的下一段。
  • 字段详细信息

    • WIND_EVEN_ODD

      @Native static final int WIND_EVEN_ODD
      缠绕规则常数,用于指定确定路径内部的奇偶规则。偶-奇规则指定如果从该点到无穷大的任何方向绘制的射线被路径段交叉奇数次,则该点位于路径内。
      参见:
    • WIND_NON_ZERO

      @Native static final int WIND_NON_ZERO
      缠绕规则常数,用于指定确定路径内部的非零规则。非零规则指定如果沿从该点到无穷大的任何方向绘制的射线在逆时针方向与顺时针方向与路径段交叉的次数不同,则该点位于路径内。
      参见:
    • SEG_MOVETO

      @Native static final int SEG_MOVETO
      指定新子路径起始位置的点的段类型常量。
      参见:
    • SEG_LINETO

      @Native static final int SEG_LINETO
      点的线段类型常量,指定从最近指定的点开始绘制的直线的终点。
      参见:
    • SEG_QUADTO

      @Native static final int SEG_QUADTO
      点对的线段类型常数,指定从最近指定的点绘制二次参数曲线。通过使用最近指定的(当前)点 (CP)、第一个控制点 (P1) 和最终插值控制点 (P2) 在 (t=[0..1]) 范围内求解参数控制方程来插值曲线。该曲线的参数控制方程为:
           P(t) = B(2,0)*CP + B(2,1)*P1 + B(2,2)*P2
           0 <= t <= 1
      
          B(n,m) = mth coefficient of nth degree Bernstein polynomial
              = C(n,m) * t^(m) * (1 - t)^(n-m)
          C(n,m) = Combinations of n things, taken m at a time
              = n! / (m! * (n-m)!)
       
      参见:
    • SEG_CUBICTO

      @Native static final int SEG_CUBICTO
      一组 3 个点的线段类型常量,指定从最近指定的点开始绘制的三次参数曲线。通过使用最近指定的(当前)点(CP)、第一个控制点(P1)、第二个控制点(P2)和最终插值控制点( P3).此曲线的参数控制方程为:
           P(t) = B(3,0)*CP + B(3,1)*P1 + B(3,2)*P2 + B(3,3)*P3
           0 <= t <= 1
      
          B(n,m) = mth coefficient of nth degree Bernstein polynomial
              = C(n,m) * t^(m) * (1 - t)^(n-m)
          C(n,m) = Combinations of n things, taken m at a time
              = n! / (m! * (n-m)!)
       
      这种形式的曲线通常称为贝塞尔曲线。
      参见:
    • SEG_CLOSE

      @Native static final int SEG_CLOSE
      段类型常量,指定前面的子路径应该通过追加一条线段回到与最近的 SEG_MOVETO 对应的点来关闭。
      参见:
  • 方法详情

    • getWindingRule

      int getWindingRule()
      返回用于确定路径内部的缠绕规则。
      返回:
      缠绕规则。
      参见:
    • isDone

      boolean isDone()
      测试迭代是否完成。
      返回:
      true 如果所有段都已读取; false否则。
    • next

      void next()
      只要在该方向上有更多点,就将迭代器沿主要遍历方向向前移动到路径的下一段。
    • currentSegment

      int currentSegment(float[] coords)
      返回迭代中当前路径段的坐标和类型。返回值是路径段类型:SEG_MOVETO、SEG_LINETO、SEG_QUADTO、SEG_CUBICTO 或 SEG_CLOSE。必须传入长度为 6 的浮点数组,用于存储点的坐标。每个点都存储为一对浮点 x,y 坐标。 SEG_MOVETO 和 SEG_LINETO 类型返回一个点,SEG_QUADTO 返回两个点,SEG_CUBICTO 返回 3 个点,SEG_CLOSE 不返回任何点。
      参数:
      coords - 保存从此方法返回的数据的数组
      返回:
      当前路径段的路径段类型。
      参见:
    • currentSegment

      int currentSegment(double[] coords)
      返回迭代中当前路径段的坐标和类型。返回值是路径段类型:SEG_MOVETO、SEG_LINETO、SEG_QUADTO、SEG_CUBICTO 或 SEG_CLOSE。必须传入长度为 6 的双精度数组,可用于存储点的坐标。每个点都存储为一对双 x,y 坐标。 SEG_MOVETO 和 SEG_LINETO 类型返回一个点,SEG_QUADTO 返回两个点,SEG_CUBICTO 返回 3 个点,SEG_CLOSE 不返回任何点。
      参数:
      coords - 保存从此方法返回的数据的数组
      返回:
      当前路径段的路径段类型。
      参见: