Crear un mapa de bits vacío y dibujar a través de un lienzo en Android

105

Me gustaría crear un mapa de bits vacío y establecer un lienzo para ese mapa de bits y luego dibujar cualquier forma en el mapa de bits.

Sunil Pandey
fuente

Respuestas:

196

Probablemente esto sea más simple de lo que piensa:

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

Aquí hay una serie de tutoriales que encontré sobre el tema: Dibujar con la serie Canvas

piedras grandes
fuente
Si creo eso dentro de una clase separada, ¿cómo haría referencia al mapa de bits en otra clase? Por ejemplo: Bitmap text = BitmapFactory.decodeResource (mContext.getResources (), ¿Qué poner aquí?); Necesito un textView dentro de un fondo de pantalla en vivo de opengl. Gracias de antemano
Steve C.
Hola @bigstones, estoy siguiendo su código para crear un mapa de bits en onSizeChanged () cuando estoy creando un mapa de bits. Obtengo OutOfMemoryError, consulte este stackoverflow.com/questions/24303759/…
user123456
¿Cómo se puede hacer esto en otro hilo mientras se usa SurfaceView?
Zach H
-3

No utilice Bitmap.Config.ARGB_8888

En su lugar, utilice 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 puede llevarlo a problemas de OutOfMemory cuando se trata de más mapas de bits o mapas de bits grandes. O mejor aún, intente evitar el uso de la opción ARGB en sí.

usuario2903200
fuente
12
ARGB_4444 está obsoleto ahora ( developer.android.com/reference/android/graphics/… )
Allen