文字版:
非零环绕原则:
如果需要判断某一个区域是否需要填充颜色. 就从该区域中随机的选取一个点。
从这个点拉一条直线出来, 一定要拉到图形的外面. 此时以该点为圆心。
看穿过拉出的直线的线段. 如果是顺时针方向就记为 +1, 如果是 逆时针方向,
就记为 -1. 最终看求和的结果. 如果是 0 就不填充. 如果是 非零 就填充.
说实话光看文字 实在是悟不出来什么意思 可能人比较菜吧。
个人理解: 假如划线顺时针是1 逆时针是-1 首先是看你的线把区域分成几块,
每块都假设往外走出一条线,像图中黑色区域往外 就经过一条顺时针的线 那黑色部分就要填充颜色
而里面的房子往外走 要先经过逆时针的线 再经过顺时针 这样 -1 + 1 = 0 就不填充颜色。
以上。 开始我都是顺时针划线 结果一片漆黑 不过有了 beginPath() 重新画一条线就是了
每天都是不想努力的一天....