Membuat bitmap kosong dan menggambar melalui kanvas di Android

106

Saya ingin membuat bitmap kosong dan menyetel kanvas ke bitmap itu dan kemudian menggambar bentuk apa pun di bitmap.

Sunil Pandey
sumber

Jawaban:

197

Ini mungkin lebih sederhana dari yang Anda pikirkan:

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

Berikut adalah serangkaian tutorial yang saya temukan tentang topik ini: Menggambar dengan Seri Kanvas

batu besar
sumber
Jika saya membuatnya dalam kelas terpisah, bagaimana saya mereferensikan bitmap di kelas lain. Misalnya: Bitmap text = BitmapFactory.decodeResource (mContext.getResources (), What to put here?); Saya membutuhkan textView dalam wallpaper hidup terbuka. Terima kasih sebelumnya
Steve C.
Hai @bigstones Saya mengikuti kode Anda untuk membuat bitmap di onSizeChanged () ketika saya membuat bitmap, saya mendapatkan OutOfMemoryError, silakan lihat stackoverflow.com/questions/24303759/…
user123456
Bagaimana ini bisa dilakukan di utas lain saat menggunakan SurfaceView?
Zach H
-3

Jangan gunakan Bitmap.Config.ARGB_8888

Sebaliknya gunakan 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 dapat membawa Anda ke masalah OutOfMemory saat berurusan dengan lebih banyak bitmap atau bitmap besar. Atau lebih baik lagi, coba hindari penggunaan opsi ARGB itu sendiri.

pengguna2903200
sumber
12
ARGB_4444 sudah tidak digunakan lagi sekarang ( developer.android.com/reference/android/graphics/… )
Allen