Module  java.desktop
软件包  java.awt.geom

Interface PathIterator

  • 所有已知实现类:
    FlatteningPathIterator


    public interface PathIterator
    PathIterator接口为实现Shape接口的对象提供了通过允许调用者一次检索该边界的路径来返回其边界的几何的机制。 该接口允许这些对象通过使用第一到第三阶Bézier曲线来检索它们的边界的路径,该曲线是线和二次或三次Bézier样条。

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

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

    另请参见:
    ShapeBasicStroke
    • Field Summary

      Fields  
      Modifier and Type Field 描述
      static int SEG_CLOSE
      通过将线段追加到与最近的SEG_MOVETO对应的点来指定应该关闭前一子路径的段类型常量。
      static int SEG_CUBICTO
      指定要从最近指定点绘制的三次参数曲线的3个点集合的段类型常数。
      static int SEG_LINETO
      指定要从最近指定点绘制的行的终点的点的段类型常量。
      static int SEG_MOVETO
      指定新子路径起始位置的点的段类型常量。
      static int SEG_QUADTO
      指定从最近指定点绘制的二次参数曲线的一对点的段类型常数。
      static int WIND_EVEN_ODD
      用于指定用于确定路径内部的偶数奇数规则的绕组规则常数。
      static int WIND_NON_ZERO
      用于指定用于确定路径内部的非零规则的卷绕规则常数。
    • 方法摘要

      所有方法  接口方法  抽象方法 
      Modifier and Type 方法 描述
      int currentSegment​(double[] coords)
      返回迭代中当前路径段的坐标和类型。
      int currentSegment​(float[] coords)
      返回迭代中当前路径段的坐标和类型。
      int getWindingRule​()
      返回确定路径内部的绕组规则。
      boolean isDone​()
      测试迭代是否完成。
      void next​()
      只要在该方向上有更多的点,将迭代器沿着遍历的主要方向向前移动到路径的下一个段。
    • 字段详细信息

      • WIND_EVEN_ODD

        @Native
        static final int WIND_EVEN_ODD
        用于指定用于确定路径内部的偶数奇数规则的绕组规则常数。 奇数规则规定,如果从该点到无穷远的任何方向绘制的射线被路径段奇数次穿过,则点位于路径内。
        另请参见:
        Constant Field Values
      • WIND_NON_ZERO

        @Native
        static final int WIND_NON_ZERO
        用于指定用于确定路径内部的非零规则的卷绕规则常数。 非零规则规定如果从该点到无穷远的任何方向绘制的光线在顺时针方向上比路顺序段顺时针方向超过顺时针方向,则该点位于路径内。
        另请参见:
        Constant Field Values
      • SEG_MOVETO

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

        @Native
        static final int SEG_LINETO
        指定要从最近指定点绘制的行的终点的点的段类型常量。
        另请参见:
        Constant Field Values
      • SEG_QUADTO

        @Native
        static final int SEG_QUADTO
        指定从最近指定点绘制的二次参数曲线的一对点的段类型常数。 通过使用最近指定的(当前)点(CP),第一控制点(P1)和最终的内插控制点(P2)求解范围(t=[0..1])的参数控制方程来内(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)!) 
        另请参见:
        Constant Field Values
      • SEG_CUBICTO

        @Native
        static final int SEG_CUBICTO
        指定要从最近指定点绘制的三次参数曲线的3个点集合的段类型常数。 通过使用最近指定的(当前)点(CP),第一控制点(P1),第二控制点(P2)和最终内插控制点(P2)来求解范围(t=[0..1])的参数控制方程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)!) 
        这种形式的曲线通常被称为Bézier曲线。
        另请参见:
        Constant Field Values
      • SEG_CLOSE

        @Native
        static final int SEG_CLOSE
        通过将线段追加到与最近的SEG_MOVETO对应的点来指定应该关闭前一子路径的段类型常量。
        另请参见:
        Constant Field Values
    • 方法详细信息

      • getWindingRule

        int getWindingRule​()
        返回确定路径内部的绕组规则。
        结果
        缠绕规则。
        另请参见:
        WIND_EVEN_ODDWIND_NON_ZERO
      • 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 - 保存从此方法返回的数据的数组
        结果
        当前路径段的路径段类型。
        另请参见:
        SEG_MOVETOSEG_LINETOSEG_QUADTOSEG_CUBICTOSEG_CLOSE
      • 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 - 保存从此方法返回的数据的数组
        结果
        当前路径段的路径段类型。
        另请参见:
        SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, SEG_CLOSE