下面是如何创建剪贴面积的圆的形状:在Android上,我该如何制作怪异的剪辑区域?
Path path = new Path();
path.addCircle(200,200,100,Direction.CW);
c.clipPath(path); // c is a Canvas
现在有上防止绘制圆的边界之外的任何画布剪切区域。但是,如果我想让裁剪区域的形状像甜甜圈(或其他)呢?
我试着玩弄创建第二个路径并在其上使用toggleInverseFillType,然后将其添加到原始路径,但似乎没有工作。
另外,不是使用路径,而是可以创建一个位图用作掩码并以某种方式将其设置为Canvas上的剪贴蒙版?
编辑:答案正是我需要一个小的补充。在画布上进行多个操作时,请始终在第一个clipPath调用中使用Op.REPLACE。这将替换该Canvas上任何现有的clipPath。
作为参考,这里是我发现了6个不同的Region.Op值的含义。想象一下带有2个圆圈的维恩图。 “B”是2个圆圈重叠的部分。 “A”是不重叠的左圆。 “C”是不重叠的右圆。
c.clipPath(a,Region.Op.REPLACE);
c.clipPath(b,???);
Region.Op.DIFFERENCE -> A..
Region.Op.INTERSECT -> .B.
Region.Op.REPLACE -> .BC
Region.Op.REVERSE_DIFFERENCE -> ..C
Region.Op.UNION -> ABC
Region.Op.XOR -> A.C
“。”表示未画出的部分。对不起,如果这不是特别清楚。没有图形很难描述。
clipPath如果禁用硬件加速您的视图/活动4 – Renetik 2013-05-16 19:58:27
Clippath支持就好了, /应用。与Android 4+的区别在于HA默认启用。 – Plato 2013-06-24 12:21:22
clipPath现在也是4.3以上的HA + – Ruxton 2013-08-20 09:56:51