Path即路径,可以将其想象成一条或多条线段,它们可能是直的,也可能是弯曲的。一般来说只有一条,即连贯的,除非以下两种情况:
1、调用addXXX方法,直接添加固定形状的路径。
2、调用moveTo函数改变绘制起始位置。
1、Path的方向
Path.Direction,用于将封闭形状(例如矩形,椭圆形)添加到Path时,计算其内部像素点是被填充,还是被镂空:
Path.Direction.CW表示顺时针。
Path.Direction.CCW表示逆时针。
注意:计算规则根据FillType不同而不同。
2、Path填充模式
setFillType(FillType fillType)
FileType有以下取值:WINDING(默认值)、EVEN_ODD 、INVERSE_WINDING 、INVERSE_EVEN_ODD
1、WINDING(默认值)
这里画了6个图形,1和2是关于y=300对称,方向相反,其余的都是以(300,300)为中心,他们的边界已用黑线在图中标记。
image.png
WINDING判断一个像素点是被填充,还是被镂空的规则如下:
1、从该点引出一条假想线到外层区域,如图中红线。
2、计算从该点出发所穿过的边界,如果遇到顺时针,则+1,逆时针