Canvas之非零环绕原则
案例
效果图
思路分析
思路1
此图可以看成是两个圆,一个蓝色的圆和一个白色的圆,以及圆的阴影组成,因此我们可以先设置阴影,再将圆绘制好即可
- 代码
- 效果
- 点评
此思路白色的圆的阴影绘制位置有问题,与我们要求的不一致
思路2(推荐)
我们同样将其看成两个半径不同的蓝色的圆,不算其重叠部分重新组成的一个封闭路径
看成一个封闭路径的原因:不在路径范围的区域,才能呈现路径区域的投影
- 代码
- 效果
- 点评
可以看到实现的效果与我们要求的一样
非零环绕规则
主要用于图形的填充,判断一个区域是否填充:在一个区域中任选一点,然后在我们的区域外也任选一点,让其组成一条射线,具体填充原则,查看其非零环绕规则计数器的值,
!0
:填充
非零环绕规则计数器
第1步:初始化计数器为0 第2步:设顺时针方向为1,那么逆时针方向就为-1 第3步:根据非零环绕原则引一条射线,计算射线上最终的值,如果为0:不填充,如果!0:填充