我需要创建一个具有圆形扇区形状的剪贴蒙版.
我可以使用以下内容绘制一个:
paint.setColor(0x88FF0000); paint.setStyle(Style.FILL); canvas.drawArc(oval,30,true,paint);
我想用它作为剪切路径,所以我尝试过:
Path path = new Path(); path.addArc(oval,30); canvas.clipPath(path,Op.REPLACE);
但是addArc没有useCenter参数,所以我得到的不是扇区而是段.
解决方法
好吧,使用剪贴蒙版似乎没有正确的方法.
但是,使用PorterDuffXfermode还有另一种方法.参见ApiDemos中的Xfermodes.
我只是使用drawArc在DST_OUT运算符上绘制一个扇区.这使得扇区覆盖的图像部分不可见(未绘制).
paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(0xFFFFFFFF); paint.setStyle(Style.FILL); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); canvas.drawColor(Color.TRANSPARENT,PorterDuff.Mode.CLEAR); drawable.draw(canvas); canvas.drawArc(oval,90,paint);