java.awt.geom

接口
异常
所有已知实现类:
FlatteningPathIterator

public interface PathIterator

PathIterator 接口通过允许调用者一次一段地获取边界的路径,为实现 Shape 接口的对象提供返回其边界几何形状的机制。此接口允许这些对象一次一段地获取其边界,方法是使用从一阶到三阶 Bézier 曲线,这些曲线是直线、二次或三次 Bézier 样条。

多个子路径可以通过使用 "MOVETO" 段在几何形状中创建间断性以从一个子路径的结尾移动到下一个子路径的开头来表示。

每个子路径都可以被手动关闭,方法是在该子路径的起始 "MOVETO" 段所在的坐标上结束子路径中的最后一段,或者使用 "CLOSE" 段追加一条线段连接最后一点和第一点。应该知道,相对于使用 "CLOSE" 段关闭路径而言,手动关闭轮廓可能导致在子路径的结束点使用不同的线风格装饰。例如,BasicStroke 对象使用线 "JOIN" 装饰来连接第一点和最后一点(如果遇到 "CLOSE" 段),而在该开头坐标上结束路径将导致在结尾使用线 "CAP" 装饰。

另请参见:
Shape, BasicStroke

字段摘要
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
          用于指定确定路径内部的非零规则的旋绕规则常量。
 
方法摘要
 int currentSegment(double[] coords)
          使用迭代返回当前路径段的坐标和类型。
 int currentSegment(float[] coords)
          使用迭代返回当前路径段的坐标和类型。
 int getWindingRule()
          返回用于确定路径迭代的旋绕规则。
 boolean isDone()
          测试迭代是否完成。
 void next()
          只要最初的遍历方向上还存在点,就沿该方向将迭代器移动到下一个路径段。
 

字段详细信息

WIND_EVEN_ODD

static final int WIND_EVEN_ODD
用于指定确定路径内部的奇偶规则的旋绕规则常量。奇偶规则规定,如果路径段穿过任意方向上从一点向无穷大绘制的射线的次数为奇数,则该点位于路径内。

另请参见:
常量字段值

WIND_NON_ZERO

static final int WIND_NON_ZERO
用于指定确定路径内部的非零规则的旋绕规则常量。非零规则规定,如果路径段按逆时针方向与按顺时针方向穿过任意方向上从一点向无穷大绘制的射线的次数不同,则该点位于路径内。

另请参见:
常量字段值

SEG_MOVETO

static final int SEG_MOVETO
该段类型常量针对某个点,指定新子路径的起始位置。

另请参见:
常量字段值

SEG_LINETO

static final int SEG_LINETO
该段类型常量针对某个点,指定要根据最新指定点绘制的线的结束点。

另请参见:
常量字段值

SEG_QUADTO

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

static final int SEG_CUBICTO
该段类型常量针对某个 3 个点的集合,指定要根据最新指定点绘制的三次参数曲线。该曲线通过使用最新指定的(当前)点 (CP)、第一个控制点 (P1)、第二个控制点 (P2) 和最后一个内插的控制点 (P3) 在 (t=[0..1]) 范围内解参数控制方程来内插。此曲线的参数控制方程为:
          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 曲线。

另请参见:
常量字段值

SEG_CLOSE

static final int SEG_CLOSE
该段类型常量指定应该通过将线段追加到与最新 SEG_MOVETO 对应的点来关闭前面的子路径。

另请参见:
常量字段值
方法详细信息

getWindingRule

int getWindingRule()
返回用于确定路径迭代的旋绕规则。

返回:
旋绕规则。
另请参见:
WIND_EVEN_ODD, WIND_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 的 float 数组,该数组可用于存储点的坐标。每个点都存储为一对 float x、y 坐标。SEG_MOVETO 和 SEG_LINETO 类型返回一个点,SEG_QUADTO 返回两个点,SEG_CUBICTO 返回 3 个点,SEG_CLOSE 不返回任何点。

参数:
coords - 保存从此方法返回数据的数组
返回:
当前路径段的路径段类型。
另请参见:
SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, SEG_CLOSE

currentSegment

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

参数:
coords - 保存从此方法返回数据的数组
返回:
当前路径段的路径段类型。
另请参见:
SEG_MOVETO, SEG_LINETO, SEG_QUADTO, SEG_CUBICTO, SEG_CLOSE