- 所有已知的实现类:
-
FlatteningPathIterator
public interface PathIterator
PathIterator
接口提供了实现Shape
接口的对象返回其边界几何形状的机制,允许调用者逐段检索该边界的路径。该接口允许这些对象通过使用1到3阶贝塞尔曲线(直线和二次或三次贝塞尔样条)逐段检索其边界的路径。
可以通过使用“MOVETO”段来表示多个子路径,以在几何形状中创建不连续性,从而从一个子路径的末尾移动到下一个子路径的开头。
每个子路径可以通过手动结束子路径中的最后一段与该子路径的起始“MOVETO”段上的相同坐标,或者使用“CLOSE”段来附加一条线段从最后一个点返回到第一个点来手动关闭。请注意,手动关闭轮廓而不是使用“CLOSE”段来关闭路径可能导致在子路径的端点处使用不同的线型装饰。例如,如果遇到“CLOSE”段,则BasicStroke
对象使用线“JOIN”装饰连接第一个点和最后一个点,而仅在相同坐标结束路径会导致在端点处使用线“CAP”装饰。
- 参见:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
指定前一个子路径应通过将线段附加回到对应于最近的SEG_MOVETO的点来关闭的段类型常量。static final int
指定从最近指定点绘制的三个点的段类型常量,这些点指定了一个立方参数曲线。static final int
指定一个点的段类型常量,该点指定了从最近指定点绘制的线的端点。static final int
指定新子路径的起始位置的点的段类型常量。static final int
指定一对点的段类型常量,这对点指定了从最近指定点绘制的二次参数曲线。static final int
用于指定奇偶规则以确定路径内部的环绕规则常量。static final int
用于指定非零规则以确定路径内部的环绕规则常量。 -
Method Summary
Modifier and TypeMethodDescriptionint
currentSegment
(double[] coords) 返回迭代中当前路径段的坐标和类型。int
currentSegment
(float[] coords) 返回迭代中当前路径段的坐标和类型。int
返回用于确定路径内部的环绕规则。boolean
isDone()
检查迭代是否完成。void
next()
将迭代器移动到路径的下一个段,沿着主要遍历方向向前,只要在该方向上还有更多点。
-
Field Details
-
WIND_EVEN_ODD
用于指定奇偶规则以确定路径内部的环绕规则常量。奇偶规则指定,如果从该点向无穷远处绘制的射线与路径段相交的次数为奇数,则该点位于路径内部。- 参见:
-
WIND_NON_ZERO
用于指定非零规则以确定路径内部的环绕规则常量。非零规则指定,如果从该点向无穷远处绘制的射线在逆时针方向和顺时针方向交叉的次数不同,则该点位于路径内部。- 参见:
-
SEG_MOVETO
指定新子路径的起始位置的点的段类型常量。- 参见:
-
SEG_LINETO
指定一个点的段类型常量,该点指定了从最近指定点绘制的线的端点。- 参见:
-
SEG_QUADTO
指定一对点的段类型常量,这对点指定了从最近指定点绘制的二次参数曲线。该曲线通过在范围(t=[0..1])
内解决参数控制方程来插值,使用最近指定(当前)点(CP)、第一个控制点(P1)和最终插值控制点(P2)。该曲线的参数控制方程为:P(t) = B(2,0)*CP + B(2,1)*P1 + B(2,2)*P2 0 <= t <= 1 B(n,m) = 第n次伯恩斯坦多项式的第m个系数 = C(n,m) * t^(m) * (1 - t)^(n-m) C(n,m) = 从n个事物中取m个的组合 = n! / (m! * (n-m)!)
- 参见:
-
SEG_CUBICTO
指定从最近指定点绘制的三个点的段类型常量。该曲线通过在范围(t=[0..1])
内解决参数控制方程来插值,使用最近指定(当前)点(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) = 第n次伯恩斯坦多项式的第m个系数 = C(n,m) * t^(m) * (1 - t)^(n-m) C(n,m) = 从n个事物中取m个的组合 = n! / (m! * (n-m)!)
这种曲线形式通常称为贝塞尔曲线。- 参见:
-
SEG_CLOSE
指定前一个子路径应通过将线段附加回到对应于最近的SEG_MOVETO的点来关闭的段类型常量。- 参见:
-
-
Method Details
-
getWindingRule
int getWindingRule()返回用于确定路径内部的环绕规则。 -
isDone
boolean isDone() -
next
void next() -
currentSegment
int currentSegment(float[] 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
- 保存从此方法返回的数据的数组 - 返回:
- 当前路径段的路径段类型。
- 参见:
-