fill(fillRule) clip( )和isPointinPath ( ) 非零环绕规则和奇偶环绕规则

fillRule

"nonzero":非零环绕原则,默认的原则。

"evenodd":奇偶环绕原则。

1."nonzero":非零环绕原则

如果是与路径顺时针相交时,那么计数器就加1, 如果是与路径逆时针相交时,那么计数器就减1.

如果计数器始终不为0,那么此区域就在路径范围里面,在调用fill()方法时,浏览器就会对其进行填充。如果最终值是0,那么此区域就不在路径范围内,浏览器就不会对其进行填充。

fill(fillRule) clip( )和isPointinPath ( ) 非零环绕规则和奇偶环绕规则_第1张图片


2."evenodd":奇偶环绕原则

平面内的任何一点P,引出一条射线,注意不要经过多边形的顶点,如果射线与多边形的交点的个数为奇数,则点P在多边形的内部,浏览器就会对其进行填;如果交点的个数为偶数,则点P在多边形的外部,浏览器就不会对其进行填充。

fill(fillRule) clip( )和isPointinPath ( ) 非零环绕规则和奇偶环绕规则_第2张图片

根据两个规则填充曲线(顶部):奇数规则(左)和非零绕组规则(右)。在每种情况下,箭头显示来自曲线的P点的射线。在偶数情况下,光线与两条线相交,即偶数;因此,P被认为是“曲线外”。通过非零绕组规则,光线以顺时针方向相交两次,每次对绕组分数贡献-1:因为总数-2不为零,所以P被判定为曲线内部

你可能感兴趣的:(fill(fillRule) clip( )和isPointinPath ( ) 非零环绕规则和奇偶环绕规则)