我试图在画布上画3个作品 第一个是绿色的,正在背面。第二个是红色,超过绿色。第三是超越它们,它应该“切断”前两个部分。像这样:
我知道我应该这样做:
canvas.drawColor(red);
canvas.drawRect(greenRect, paintGreen);
canvas.drawRect(smallRect, paintWithSomePorterduff);
canvas.drawRect(redRect, paintRed);
canvas.drawRect(smallRect, paintWithSomePorterduff);
但是要使用什么PorterDuffXfermode,以及如何只剪切一个矩形而不是通过所有矩形来填充并得到这个:
P.S。我不能制作不同的位图,然后绘制它们,因为它会在每1或2秒重绘一次。
答案 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());