114 votes

Créer un bitmap vide et dessiner à travers le canevas dans Android

J'aimerais créer un bitmap vide et définir un canevas sur ce bitmap, puis dessiner n'importe quelle forme sur ce bitmap.

212voto

bigstones Points 9636

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 : Série "Dessin sur toile

0 votes

Si je crée cela dans une classe distincte, comment puis-je faire référence au bitmap dans une autre classe ? Par exemple : Bitmap text = BitmapFactory.decodeResource(mContext.getResources(), What to put here ?); J'ai besoin d'une TextView dans un live wallpaper opengl. Merci d'avance

0 votes

Salut @bigstones Je suis votre code pour la création de bitmap dans onSizeChanged() quand je crée le bitmap je reçois OutOfMemoryError s'il vous plaît voir ceci stackoverflow.com/questions/24303759/

0 votes

Comment faire cela dans un autre thread tout en utilisant SurfaceView ?

-6voto

user2903200 Points 86

Ne pas utiliser Bitmap.Config.ARGB_8888

A la place, utilisez 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 de OutOfMemory lorsque vous utilisez plusieurs bitmaps ou des bitmaps de grande taille. Ou mieux encore, essayez d'éviter l'utilisation de l'option ARGB elle-même.

13 votes

ARGB_4444 est désormais obsolète ( developer.Android.com/reference/Android/graphics/ )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X