การสร้างบิตแมปที่ว่างเปล่าและการวาดภาพบนผืนผ้าใบใน Android


106

ฉันต้องการสร้างบิตแมปเปล่าและตั้งค่าผืนผ้าใบเป็นบิตแมปนั้นจากนั้นวาดรูปร่างใด ๆ บนบิตแมป

คำตอบ:


198

สิ่งนี้อาจง่ายกว่าที่คุณคิด:

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

นี่คือชุดของบทเรียนที่ฉันพบในหัวข้อ: การวาดด้วย Canvas Series


ถ้าฉันสร้างสิ่งนั้นภายในคลาสแยกฉันจะอ้างอิงบิตแมปในคลาสอื่นได้อย่างไร ตัวอย่างเช่น: Bitmap text = BitmapFactory.decodeResource (mContext.getResources () จะใส่อะไรที่นี่?); ฉันต้องการ textView ภายในวอลล์เปเปอร์ opengl ขอบคุณล่วงหน้า
Steve C.

สวัสดี @bigstones ฉันกำลังติดตามรหัสของคุณเพื่อสร้างบิตแมปใน onSizeChanged () เมื่อฉันกำลังสร้างบิตแมปฉันได้รับ OutOfMemoryError โปรดดูที่stackoverflow.com/questions/24303759/…
user123456

สิ่งนี้จะทำได้อย่างไรในเธรดอื่นขณะใช้ SurfaceView
Zach H

-3

อย่าใช้ Bitmap.Config.ARGB_8888

ใช้ 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 สามารถนำคุณไปสู่ปัญหา OutOfMemory เมื่อจัดการกับบิตแมปเพิ่มเติมหรือบิตแมปขนาดใหญ่ หรือดีกว่านั้นให้พยายามหลีกเลี่ยงการใช้ตัวเลือก ARGB เอง


12
ARGB_4444 เลิกใช้แล้ว ( developer.android.com/reference/android/graphics/… )
Allen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.