2010-11-11 11 views
8

Sto cercando di capire come disegnare su una bitmap in Android e mantenere una copia di questi bitmap modificati per una funzione di annullamento.Come disegnare su Bitmap in Android?

Bitmap b = ... 
Paint p = new Paint(); 
canvas.drawBitmap(b, new Matrix(), null); 
canvas.drawCircle(0,0,20,20); 
//does Bitmap b have the circle drawn on it next time? 

O come faccio ad avere il bitmap dopo il suo stato disegnato su con la tela (voglio conservare una pila di immagini bitmap con le modifiche applicate da disegno tela)? Forse sto sbagliando tutto questo.

risposta

17

Utilizzare new Canvas(Bitmap bitmap) per fornire un Canvas con un Bitmap che conterrà il risultato delle operazioni di disegno.

L'originale Bitmap che si disegna su Canvas con drawBitmap non verrà mai modificato.

Dopo ogni operazione eseguita dall'utente si potrebbe:

  • tenere in memoria un elenco delle operazioni di fatto
  • Salva risultati intermedi a una memoria esterna del Bitmap.compress

Un altro approccio potrebbe essere utilizzare uno LayerDrawable per impilare le operazioni di disegno successive una sopra l'altra. Puoi immaginare di consentire all'utente di disabilitare ogni singola operazione eseguita.

+1

In questo momento stavamo semplicemente disegnando un gruppo di cerchi in base all'evento touch dell'utente, ma man mano che più cerchi vengono disegnati e tenuti in memoria, rallenta considerevolmente. Ecco perché stavamo cercando "Salva" input/azioni utente applicando le modifiche a una bitmap, in questo modo viene disegnata una sola bitmap ogni volta invece di salvare e disegnare migliaia di cerchi. –

+0

Quindi è possibile utilizzare Bitmap.copy (...) nella bitmap di destinazione e fornire al canvas la bitmap risultante come nuova destinazione del disegno con Canvas.setBitmap() –

Problemi correlati