PorterDuffXfermode画布,其中有几个相交

时间:2016-10-03 10:11:24

标签: android canvas rect porter-duff

我试图在画布上画3个作品 第一个是绿色的,正在背面。第二个是红色,超过绿色。第三是超越它们,它应该“切断”前两个部分。像这样:

enter image description here

我知道我应该这样做:

     canvas.drawColor(red);
     canvas.drawRect(greenRect, paintGreen);
     canvas.drawRect(smallRect, paintWithSomePorterduff);
     canvas.drawRect(redRect, paintRed);
     canvas.drawRect(smallRect, paintWithSomePorterduff);

但是要使用什么PorterDuffXfermode,以及如何只剪切一个矩形而不是通过所有矩形来填充并得到这个:

enter image description here

P.S。我不能制作不同的位图,然后绘制它们,因为它会在每1或2秒重绘一次。

1 个答案:

答案 0 :(得分:0)

我必须通过创建位图并重新绘制它来完成它。

canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
canvas.drawColor(colorBottom);
timeBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
timeCanvas = new Canvas(timeBitmap);
timeCanvas.drawArc(oval, 270, secRot, true, secondHandPaint);

timePaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR));
timeCanvas.drawText(time, xOffset, yOffset, timePaint);
canvas.drawBitmap(timeBitmap, 0, 0, new Paint());