2010-08-17 9 views
19

ich eine Bitmap auf eine Leinwand zeichnen den folgenden Aufruf verwenden:Wie tönt man eine Bitmap in Android?

_playerImage = BitmapFactory.decodeResource(getResources(), R.drawable.player); 

Wie kann ich tönen jetzt dieses Bild weiß? Ich versuche, das Bild weiß wie in Top-Scrollern blinken zu lassen, wenn ein Gegner von einer Kugel getroffen wird.

Muss ich etwas anderes als BitmapFactory verwenden?

Antwort

46

Sie können eine ColorFilter auf Ihrem Paint verwenden, wenn Sie die Bitmap zeichnen.

+8

Brilliant! Danke vielmals! "Malen p = neue Farbe (Color.RED); \t \t Farbfilter Filter = new LightingColorFilter (Color.RED, 1), \t \t p.setColorFilter (Filter);" – FoppyOmega

+1

Hi Romain, gibt es eine Methode zum Zeichnen einer getönten Bitmap, bei der nicht für jeden Zeichenaufruf eine neue ColorFilter-Instanz erstellt wird? Nehmen wir an, Sie haben ein paar 100 Sprites, die Sie in verschiedenen Farben tönen möchten. das würde einen neuen lightingColorFilter für jeden drawBitmap-Aufruf erfordern. Das geht wirklich nicht gut mit der gesamten Projekt-Butter-Philosophie von "nicht in Ihrem Render-Aufruf zuordnen". Vor allem, da das Tönen eine direkte Korrelation zum OpenGL-Backend hat, bei dem kein Objekt zugeordnet werden muss. Was ist mit einem Aufruf drawBitmap (..., int mul, int add)? –

+2

@ P.Melch Gute Frage (und das ist wirklich alt, aber ich setze das hier, weil es relevant ist und andere könnten es nützlich finden) ... Wenn Sie eine relativ kleine Anzahl von Farben haben, könnten Sie mehrere Instanzen behalten (wahrscheinlich mit einem Pool) von ColorFilter-Objekten, da LightingColorFilter keine Änderung seiner Farbe zu unterstützen scheint. Wenn jemand eine bessere Idee hat, wäre es sicherlich hilfreich. – kungphu