返回介绍

java.awt.geom 接口 PathIterator

发布于 2019-10-04 09:50:25 字数 7293 浏览 969 评论 0 收藏 0

所有已知实现类:
FlatteningPathIterator

public interface PathIterator

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

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

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

另请参见:
Shape , BasicStroke

字段摘要
staticintSEG_CLOSE

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

staticintSEG_CUBICTO

该段类型常量针对某个 3 个点的集合,指定要根据最新指定点绘制的三次参数曲线。

staticintSEG_LINETO

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

staticintSEG_MOVETO

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

staticintSEG_QUADTO

该段类型常量针对某对点,指定要根据最新指定点绘制的二次参数曲线。

staticintWIND_EVEN_ODD

用于指定确定路径内部的奇偶规则的缠绕规则常量。

staticintWIND_NON_ZERO

用于指定确定路径内部的非零规则的缠绕规则常量。

方法摘要
intcurrentSegment(double[]coords)

使用迭代返回当前路径段的坐标和类型。

intcurrentSegment(float[]coords)

使用迭代返回当前路径段的坐标和类型。

intgetWindingRule()

返回用于确定路径迭代的缠绕规则。

booleanisDone()

测试迭代是否完成。

voidnext()

只要最初的遍历方向上还存在点,就沿该方向将迭代器移动到下一个路径段。

字段详细信息

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文