2016-08-03 3 views
1

タイトルを表示新しいキャンバスを描画すると、古いキャンバスのコンテンツが削除されますか?

私はキャンバスにdrawCircleを持っていますが、下のコードで新しいキャンバスを作っていたら、古いサークルは消えてしまいますか?私はそれが効率的ではないかもしれないが、私は興味があると理解しています。

ImageView background = (ImageView) findViewById(R.id.Background); 
Bitmap bitmap = Bitmap.createBitmap(500,500, Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(bitmap); 
Paint paint = new Paint(); 
paint.setStyle(Paint.Style.FILL); 
paint.setColor(Color.BLUE); 
canvas.drawCircle(point0,point1,10,paint); 
background.setImageBitmap(bitmap) 

おかげ

+0

号すべての描かれた内容が消去されます。しかし、私はあなたがすぐにあなたの記憶を記入し、OOM例外が発生しますね。 –

+0

どうすれば私は新しいdrawCircleを作成し、古いものを削除/消去するのですか? –

+0

スレッドの先頭でclearCircleを使用する必要がありますか?または、スレッド内で繰り返し消去しますか?または、スレッドで色を透明/クリアに繰り返し設定しますか?このことについてどうお勧めしますか?ありがとう。 –

答えて

2

あなたは、背景画像を変更するには、あなたの新しい新しいキャンバス毎回作成する必要がいけません。 ちょうど更新既存のキャンバスを使用し、それに

// Have your variables like this 
ImageView background; 
Bitmap bitmap; 
Canvas canvas; 

// Associate them to the respective views 
background = (ImageView) findViewById(R.id.Background); 
bitmap = Bitmap.createBitmap(500,500, Bitmap.Config.ARGB_8888); 
Canvas canvas = new Canvas(); 
Paint paint = new Paint(); 
paint.setStyle(Paint.Style.FILL); 
paint.setColor(Color.BLUE); 

// instead of creating a new canvas, just update the already existing with your bitmap 
canvas.setBitmap(bitmap); 
canvas.drawCircle(point0,point1,10,paint); 
background.setImageBitmap(bitmap) 

をビットマップを設定します。あなたはキャンバスをクリアしたい場合@Doomsknight からの発言のおかげで、あなたは簡単に行うことができます。

canvas.drawColor(Color.White); 

、それは

+0

私は背景イメージを設定したくありません。わかった。私は、drawCircleを更新(および古いものを削除/削除)したいと思います。ありがとう:) –

+1

@TomHogan 'canvas.drawColor(Color.White);'を使ってキャンバスをクリアすることができます。もしあなたがただそれをすべて空白にしようとしているならば。新しいキャンバスを作成しないでください。円だけを削除したい場合は、キャンバスを消去して、すべてを元に戻すことができます。または、サークルなしで画像を保存するために2番目のビットマップを使用し、それを元に戻します。 – Doomsknight

+1

'canvas.drawColor(Color.White);'キャンバスを白くする**。 OPが望んでいるかもしれないかもしれないかもしれない。 –

関連する問題