-
- 所有已知实现类:
-
FlatteningPathIterator
public interface PathIterator
PathIterator
接口为实现Shape
接口的对象提供了一种机制,通过允许调用者一次一段地检索该边界的路径来返回其边界的几何。 此接口允许这些对象通过使用第1到第3阶Bézier曲线一次检索其边界的路径,这些曲线是线和二次或三次Bézier样条。可以通过使用“MOVETO”段来表示多个子路径,以在几何中创建不连续,以便从一个子路径的末尾移动到下一个子路径的开头。
可以通过在与该子路径的开始“MOVETO”段相同的坐标上结束子路径中的最后一个段来手动关闭每个子路径,或者通过使用“CLOSE”段将最后一个点的线段附加回第一个段。 请注意,手动关闭轮廓而不是使用“CLOSE”段来关闭路径可能会导致在子路径的端点处使用不同的线型装饰。 例如,如果遇到“CLOSE”段,则
BasicStroke
对象使用“JOIN”装饰线来连接第一个和最后一个点,而只是在与起始坐标相同的坐标上结束路径会导致行“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
@Nativestatic final int WIND_EVEN_ODD
用于指定用于确定路径内部的奇偶规则的绕组规则常数。 奇偶规则指定如果从该点到无穷大的任何方向绘制的光线被路径段划过奇数次,则该点位于路径内。- 另请参见:
- 常数字段值
-
WIND_NON_ZERO
@Nativestatic final int WIND_NON_ZERO
用于指定用于确定路径内部的非零规则的缠绕规则常数。 非零规则指定如果从该点到无穷大的任何方向上绘制的光线在逆时针方向上与顺时针方向相交的路径段的次数不同,则该点位于路径内。- 另请参见:
- 常数字段值
-
SEG_QUADTO
@Nativestatic 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
@Nativestatic final int SEG_CUBICTO
3个点集的段类型常量,指定从最近指定的点绘制的立方参数曲线。 通过使用最近指定的(当前)点(CP),第一个控制点(P1),第二个控制点(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曲线。- 另请参见:
- 常数字段值
-
-
方法详细信息
-
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的浮点数组,并可用于存储点的坐标。 每个点都存储为一对浮点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的双数组,并且可以用于存储点的坐标。 每个点都存储为一对双x,y坐标。 SEG_MOVETO和SEG_LINETO类型返回一个点,SEG_QUADTO返回两个点,SEG_CUBICTO返回3个点,SEG_CLOSE不返回任何点。- 参数
-
coords
- 包含此方法返回的数据的数组 - 结果
- 当前路径段的路径段类型。
- 另请参见:
-
SEG_MOVETO
,SEG_LINETO
,SEG_QUADTO
,SEG_CUBICTO
,SEG_CLOSE
-
-