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.