2016-10-03 7 views
0

キャンバスに3つの矩形を描画しようとしています。
最初は緑色で、背面に向かっています。二番目は赤で緑の上にあります。第三は両者を行き来し、最初の2つの矩形を「切り取る」べきである。このような何か:PorterDuffXfermodeキャンバスに複数の矩形が交差する

enter image description here

私はこのような何かを行う必要があることを得る:

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

しかし、一つだけRECTをクリップし、すべてに穴を作らないために、そしてどのように使用するかをPorterDuffXfermodeそれらの本を得る:

enter image description here

PSをビットマップを1つまたは2秒ごとに再描画するため、異なるビットマップを作成して描画することはできません。

答えて

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()); 
関連する問題