Erstellen einer leeren Bitmap und Zeichnen durch Leinwand in Android


Antworten:


196

Dies ist wahrscheinlich einfacher als Sie denken:

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

Hier ist eine Reihe von Tutorials, die ich zum Thema gefunden habe: Zeichnen mit Canvas-Serien


Wenn ich das in einer separaten Klasse erstelle, wie würde ich dann auf die Bitmap in einer anderen Klasse verweisen? Zum Beispiel: Bitmap text = BitmapFactory.decodeResource (mContext.getResources (), Was soll hier eingefügt werden?); Ich benötige eine Textansicht in einem OpenGL-Live-Hintergrund. Vielen Dank im Voraus
Steve C.

Hallo @bigstones, ich folge Ihrem Code zum Erstellen einer Bitmap in onSizeChanged (), wenn ich eine Bitmap erstelle. Ich erhalte OutOfMemoryError.
Weitere

Wie kann dies in einem anderen Thread bei Verwendung von SurfaceView durchgeführt werden?
Zach H

-3

Verwenden Sie Bitmap.Config.ARGB_8888 nicht

Verwenden Sie stattdessen 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 kann Sie in OutOfMemory-Probleme bringen, wenn Sie mit mehr Bitmaps oder großen Bitmaps arbeiten. Oder noch besser: Vermeiden Sie die Verwendung der ARGB-Option.


12
ARGB_4444 ist jetzt veraltet ( developer.android.com/reference/android/graphics/… )
Allen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.