1

我正在尝试在画布上绘制 3 个矩形。
第一个是绿色的,在后面。第二个是红色的,在绿色的上方。第三是遍历它们,它应该“切穿”前两个矩形。像这样的东西:

在此处输入图像描述

我知道我应该做这样的事情:

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

但是要使用什么 PorterDuffXfermode,以及如何只剪辑一个矩形而不是在所有矩形上打一个洞并得到这个:

在此处输入图像描述

PS 我不能制作不同的位图然后绘制它们,因为它会每隔 1 或 2 秒重新绘制一次。

4

1 回答 1

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());
于 2016-10-04T10:07:07.333 回答