路径填充模式

为路径定义的两种填充模式是 交替 填充模式和 绕线模式。 这两种填充模式都使用偶数规则来确定如何填充封闭路径。

FP_ALTERNATEMODE应用偶数规则,如下所示:从封闭路径中的任何任意起点绘制一条线,到明显位于封闭路径之外的某个点。 如果线条与奇数的路径段相交,则起点位于封闭区域内,因此是填充区域的一部分。 偶数的交叉意味着该点不在要填充的区域。

FP_WINDINGMODE不仅考虑向量穿过路径段的次数,还考虑每个段的方向。 路径被视为从头到尾绘制,每个段的方向由其指定点的顺序所隐含:段的第一个顶点是“from”点,第二个顶点是“to”点。 现在绘制在备用模式下描述的相同任意线条。 从零开始,为线条交叉的每个“正向”方向段添加一个,并为每个交叉的“反向”方向段减去一个。 (向前和反向基于段和任意线的点积。) 如果计数结果为非零,则起点位于填充区域内;零计数表示该点位于填充区域之外。

下图显示了如何将这两个规则应用于自交路径的更复杂的情况。

说明路径交替填充模式和绕线填充模式之间的差异的关系图。

在交替填充模式下,点 A 位于内,因为光线 1 通过奇数的线段,而点 B 和 C 位于外部,因为光线 2 和 3 通过偶数段。 在绕组填充模式下,点 A 和 C 位于内部,因为正 (正) 和反向 (负) 线段的总和(1 和 3)不是零,而点 B 位于外部,因为光线 2 交叉的正反线段之和为零。