Tworzenie pustej mapy bitowej i rysowanie za pomocą kanwy w systemie Android


Odpowiedzi:


197

To prawdopodobnie prostsze, niż myślisz:

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

Oto seria samouczków, które znalazłem na ten temat: Rysowanie za pomocą serii Canvas


Jeśli utworzę to w osobnej klasie, w jaki sposób miałbym odwołać się do mapy bitowej w innej klasie. Na przykład: Bitmap text = BitmapFactory.decodeResource (mContext.getResources (), Co tu wstawić?); Potrzebuję TextView w animowanej tapecie OpenGL. Z góry dziękuję
Steve C.

Cześć @bigstones Śledzę twój kod do tworzenia bitmapy w onSizeChanged () kiedy tworzę bitmapę Otrzymuję OutOfMemoryError, zobacz ten stackoverflow.com/questions/24303759/ ...
user123456

Jak można to zrobić w innym wątku podczas korzystania z SurfaceView?
Zach H

-3

Nie używaj Bitmap.Config.ARGB_8888

Zamiast tego użyj 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 może spowodować problemy z OutOfMemory, gdy masz do czynienia z większą liczbą bitmap lub dużymi bitmapami. Lub jeszcze lepiej, spróbuj unikać używania samej opcji ARGB.


12
ARGB_4444 jest teraz przestarzałe ( developer.android.com/reference/android/graphics/… )
Allen
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.