Créer un bitmap vide et dessiner via un canevas sous Android


Réponses:


197

C'est probablement plus simple que vous ne le pensez:

int w = WIDTH_PX, h = HEIGHT_PX;

Bitmap.Config conf = Bitmap.Config.ARGB_8888; // see other conf types
Bitmap bmp = Bitmap.createBitmap(w, h, conf); // this creates a MUTABLE bitmap
Canvas canvas = new Canvas(bmp);

// ready to draw on that bitmap through that canvas

Voici une série de tutoriels que j'ai trouvés sur le sujet: Dessiner avec la série Canvas


Si je crée cela dans une classe séparée, comment référencerais-je le bitmap dans une autre classe. Par exemple: Bitmap text = BitmapFactory.decodeResource (mContext.getResources (), Que mettre ici?); J'ai besoin d'un textView dans un fond d'écran en direct opengl. Merci d'avance
Steve C.

Salut @bigstones Je suis votre code pour créer un bitmap dans onSizeChanged () lorsque je crée un bitmap Je reçois OutOfMemoryError s'il vous plaît voir ce stackoverflow.com/questions/24303759
...

Comment cela peut-il être fait dans un autre thread tout en utilisant SurfaceView?
Zach H

-3

N'utilisez pas Bitmap.Config.ARGB_8888

Utilisez plutôt int w = WIDTH_PX, h = HEIGHT_PX;

Bitmap.Config conf = Bitmap.Config.ARGB_4444; // see other conf types
Bitmap bmp = Bitmap.createBitmap(w, h, conf); // this creates a MUTABLE bitmap
Canvas canvas = new Canvas(bmp);

// ready to draw on that bitmap through that canvas

ARGB_8888 peut vous poser des problèmes d'OutOfMemory lorsque vous traitez plus de bitmaps ou de gros bitmaps. Ou mieux encore, essayez d'éviter l'utilisation de l'option ARGB elle-même.


12
ARGB_4444 est désormais obsolète ( developer.android.com/reference/android/graphics/… )
Allen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.