定义缠绕规则

Flash Player 10 和 Adobe AIR 1.5 还引入了路径“缠绕”(即路径的方向)这一概念。路径的缠绕可以是正向的(顺时针),也可以是负向的(逆时针)。渲染器为 data 参数解释矢量所提供坐标的顺序确定了缠绕的方向。

正向缠绕和负向缠绕
正向缠绕和负向缠绕

A.
指示绘制方向的箭头

B.
正向缠绕(顺时针)

C.
负向缠绕(逆时针)

此外,请注意 Graphics.drawPath() 方法可选的第三个参数“winding”:

drawPath(commands:Vector.<int>, data:Vector.<Number>, winding:String = "evenOdd"):void

在这种情况下,第三个参数是一个字符串或常量,用于指定相交路径的缠绕或填充规则。(这些常数值在 GraphicsPathWinding 类中定义为 GraphicsPathWinding.EVEN_ODDGraphicsPathWinding.NON_ZERO。)当路径相交时,缠绕规则十分重要。

奇偶规则是标准的缠绕规则,早期的绘图 API 都使用此规则。奇偶规则也是 Graphics.drawPath() 方法的默认规则。使用奇偶缠绕规则时,任何相交路径都交替使用开放填充与闭合填充。如果使用同一填充绘制的两个正方形相交,则不会填充相交的区域。通常,相邻区域不会都填充或都不填充。

另一方面,非零规则依靠缠绕(绘制方向)来确定是否填充相交路径定义的区域。当相对缠绕的路径相交时,不填充所定义的区域,这与奇偶规则十分类似。对于相同缠绕的路径,将填充本来不填充的区域:

用于相交区域的缠绕规则
用于相交区域的缠绕规则

A.
奇偶缠绕规则

B.
非零缠绕规则