对于简单的封闭图形(路径无相交的现象),图形的外部和内部和容易判断,但如果路径有相交的情况,对应重叠的部分,使用不同的填充模式,内部和外部的定义有所不同。填充模式可以分为两类:
Android的Path.FillType除了支持上面两种模式外,还支持了上面两种模式的反模式,一共定义了EVEN_ODD, INVERSE_EVEN_ODD, WINDING, INVERSE_WINDING 四种模式。
本例的基本图形为两个相交的圆,使用了上述四种模式来填充图形:
showPath(canvas, 0, 0, Path.FillType.WINDING, paint); showPath(canvas, 160, 0, Path.FillType.EVEN_ODD, paint); showPath(canvas, 0, 160, Path.FillType.INVERSE_WINDING, paint); showPath(canvas, 160, 160, Path.FillType.INVERSE_EVEN_ODD, paint);