public interface PathIterator
PathIterator
接口提供了实现目标的机制Shape
接口允许呼叫者在同一时间检索边界的路径段返回其边界的几何形状。
该接口允许这些对象通过使用第一到第三阶Bézier曲线来检索它们的边界的路径,该曲线是线和二次或三次Bézier样条。
可以通过使用“MOVETO”段来表示多个子路径,以在几何中创建不连续性,以从一个子路径的末尾移动到下一个子路径的开头。
每个子路径可以通过在与子路径的开始“MOVETO”段相同的坐标上的子路径中结束最后一个段,或者通过使用“CLOSE”段将最后一个点的线段追回到第一个路段。 请注意,手动关闭轮廓而不是使用“CLOSE”段来关闭路径可能会导致在子路径的终点处使用不同的线型装饰。 例如, BasicStroke
对象使用线“JOIN”装饰来连接第一个和最后一个点,如果遇到“CLOSE”段,而简单地结束与起始坐标相同坐标的路径会导致行“CAP”装饰为在末端使用
Shape
, BasicStroke
Modifier and Type | Field and Description |
---|---|
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 | Method and Description |
---|---|
int |
currentSegment(double[] coords)
返回迭代中当前路径段的坐标和类型。
|
int |
currentSegment(float[] coords)
返回迭代中当前路径段的坐标和类型。
|
int |
getWindingRule()
返回确定路径内部的绕组规则。
|
boolean |
isDone()
测试迭代是否完成。
|
void |
next()
只要在该方向上有更多的点,将迭代器沿着遍历的主要方向向前移动到路径的下一个段。
|
@Native static final int WIND_EVEN_ODD
@Native static final int WIND_NON_ZERO
@Native static final int SEG_MOVETO
@Native static final int SEG_LINETO
@Native static final int SEG_QUADTO
(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)!)
@Native static final int SEG_CUBICTO
(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曲线。
@Native static final int SEG_CLOSE
int getWindingRule()
WIND_EVEN_ODD
,
WIND_NON_ZERO
boolean isDone()
true
如果所有段已被读取;
false
否则。
void next()
int currentSegment(float[] coords)
coords
- 保存从此方法返回的数据的数组
SEG_MOVETO
,
SEG_LINETO
,
SEG_QUADTO
,
SEG_CUBICTO
,
SEG_CLOSE
int currentSegment(double[] coords)
coords
- 保存从此方法返回的数据的数组
SEG_MOVETO
,
SEG_LINETO
,
SEG_QUADTO
,
SEG_CUBICTO
,
SEG_CLOSE