canvas 非零环绕原则

文字版:

非零环绕原则:
  如果需要判断某一个区域是否需要填充颜色. 就从该区域中随机的选取一个点。

从这个点拉一条直线出来, 一定要拉到图形的外面. 此时以该点为圆心。
看穿过拉出的直线的线段. 如果是顺时针方向就记为 +1, 如果是 逆时针方向,
就记为 -1. 最终看求和的结果. 如果是 0 就不填充. 如果是 非零 就填充.

说实话光看文字  实在是悟不出来什么意思 可能人比较菜吧。

个人理解: 假如划线顺时针是1 逆时针是-1  首先是看你的线把区域分成几块,

每块都假设往外走出一条线,像图中黑色区域往外 就经过一条顺时针的线  那黑色部分就要填充颜色

而里面的房子往外走 要先经过逆时针的线 再经过顺时针 这样 -1 + 1 = 0 就不填充颜色。

以上。 开始我都是顺时针划线 结果一片漆黑  不过有了 beginPath() 重新画一条线就是了

每天都是不想努力的一天....
原文地址:https://www.cnblogs.com/Theia/p/13276609.html