Я пытаюсь нарисовать прозрачный круг на растровом изображении в Android.У меня есть три основные переменные:
mask = Bitmap.createBitmap(this.getWidth(),this.getHeight(), Bitmap.Config.ARGB_8888);
Canvas can = new Canvas(mask);
Paint clear = new Paint();
Если я сделаю следующее, я получу ожидаемые результаты:
clear.setColor(Color.TRANSPARENT);
can.drawRect(new Rect(0,0,this.getWidth(),this.getHeight()),clear);
![enter image description here](https://i.stack.imgur.com/tNzjU.png)
Однако, если я сначала нарисую что-то еще на холсте, а затем попытаюсь очистить его с помощью прозрачности, старые данные останутся.Например:
clear.setColor(Color.argb(255,255,0,0));
can.drawRect(new Rect(0,0,this.getWidth(),this.getHeight()),clear);
clear.setColor(Color.TRANSPARENT);
can.drawRect(new Rect(0,0,this.getWidth(),this.getHeight()),clear);
![enter image description here](https://i.stack.imgur.com/D4yGq.png)
Я вижу только гигантский красный квадрат.Две нижние строки должны «стереть» закрашенный красный, чтобы сделать его снова прозрачным.В конечном итоге маска рисуется на другом холсте следующим образом:
@Override
public void onDraw(Canvas c)
{
c.drawBitmap(mask,0,0,null);
super.onDraw(c);
}