Canvas绘制填充模式、饼图、仪表盘

164 阅读1分钟

FillType

widing(默认)

widing的特征是:所有内部的点都在内部

/**
     * Specifies that "inside" is computed by a non-zero sum of signed
     * edge crossings.
     */
    WINDING         (0),
    定义内部为:计数值为非0

计算内外部区域的规则:

从左侧插入计数+1,从右侧插入计数-1,最后如果为0,那么在外部,大于0在内部

  1. 下图,两个逆时针的圆相交,看中间那块相交区域,他穿过了两个点,都是从左侧插入的,最终计数为2,那么这个点在图形的里面
    代码如下:

2. 下图上圆形为逆时针,下圆形为顺时针
代码如下:

如果不设置setFillType,默认为WINDING

EVEN_ODD

计算内外部规则: 一个点向外部做射线,如果相交个数为偶数为外部,注意这种模式下,与顺时针和逆时针无关!!!

镂空效果

使用EVEN_ODD,不要用WINDING,因为EVEN_ODD不需要考虑方向

仪表盘

PathDashEffect和PathMesure.getLength

饼图