0

画像の配列をキャンバスに追加してから個々の画像を削除することは可能ですか?それでは、ArrayListを宣言して画像を追加するとします。次に、それらをキャンバスに描画しますが、すべてではなく1つの画像だけを削除するにはどうすればよいですか?これは可能ですか?

ArrayList<Integer> myImageList = new ArrayList<Integer>();
myImageList.add(R.drawable.image1);
myImageList.add(R.drawable.image2);
myImageList.add(R.drawable.image3);
canvas.drawBitmap(myImageList[0], 300, 400, null);
canvas.drawBitmap(myImageList[1], 300, 400, null);
canvas.drawBitmap(myImageList[2], 300, 400, null);
4

1 に答える 1

0

キャンバスに画像を描画すると、そのキャンバスのビットマップのピクセル値が変更されるため、これは不可能です。

キャンバス全体をクリアして、他のすべての画像をキャンバスに再描画する必要があります。

実行できる最適化の1つは、クリップ領域を適用することです。その場合は、キャンバスをクリアせずに、次の手順に従います。

Region clip_region= region of the image(which you want to remove ) on the canvas;
canvas_object.clipRegion(clip_region);

ここで、clip_region領域のみをクリアし、キャンバス上に他のすべての画像を描画します。この最適化により、アプリはCLIPREGIONなしで描画するよりも描画に必要なCPUが少なくなります。

于 2013-01-29T19:00:13.473 に答える