Tạo một bitmap trống và vẽ thông qua canvas trong Android


Câu trả lời:


196

Điều này có lẽ đơn giản hơn bạn nghĩ:

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

Đây là một loạt các hướng dẫn mà tôi đã tìm thấy về chủ đề: Vẽ với Dòng Canvas


Nếu tôi tạo điều đó trong một lớp riêng biệt, tôi sẽ tham chiếu bitmap trong một lớp khác như thế nào. Ví dụ: Bitmap text = BitmapFactory.decodeResource (mContext.getResources (), Đặt cái gì ở đây?); Tôi cần một textView trong hình nền động opengl. Cảm ơn trước
Steve C.

Hi @bigstones tôi sau mã của bạn để tạo bitmap trong onSizeChanged () khi tôi đang tạo ra bitmap Tôi nhận OutOfMemoryError xin vui lòng xem này stackoverflow.com/questions/24303759/...
user123456

Làm thế nào điều này có thể được thực hiện trong một chuỗi khác khi sử dụng SurfaceView?
Zach H

-3

Không sử dụng Bitmap.Config.ARGB_8888

Thay vào đó, hãy sử dụng 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 có thể đưa bạn vào các vấn đề OutOfMemory khi xử lý nhiều bitmap hơn hoặc bitmap lớn. Hoặc tốt hơn, hãy thử tránh sử dụng tùy chọn ARGB.


12
ARGB_4444 hiện không được dùng nữa ( developer.android.com/reference/android/graphics/… )
Allen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.