एंड्रॉइड में कैनवास के बावजूद एक खाली बिटमैप बनाना और आरेखण करना


105

मैं एक खाली बिटमैप बनाना चाहूंगा और उस बिटमैप पर एक कैनवास सेट करूंगा और फिर बिटमैप पर किसी भी आकृति को आकर्षित करूंगा।

जवाबों:


196

यह शायद जितना आप सोच रहे हैं उससे अधिक सरल है:

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

यहाँ मैंने इस विषय पर मिलने वाले ट्यूटोरियल की एक श्रृंखला दी है: कैनवस सीरीज के साथ ड्राइंग


यदि मैं एक अलग वर्ग के भीतर बनाता हूं, तो मैं दूसरी कक्षा में बिटमैप का संदर्भ कैसे दूंगा। उदाहरण के लिए: Bitmap text = BitmapFactory.decodeResource (mContext.getResources (), यहाँ क्या डाला जाए?); मैं एक opengl लाइव वॉलपेपर के भीतर एक textView की जरूरत है। अग्रिम धन्यवाद
स्टीव सी।

हाय @bigstones मैं onSizeChanged () में बिटमैप बनाने के लिए अपने कोड अनुसरण कर रही हूं जब मैं बिटमैप मैं OutOfMemoryError हो रही है बनाने हूँ कृपया यह देखने stackoverflow.com/questions/24303759/...
user123456

सरफेसव्यू का उपयोग करते समय इसे दूसरे धागे में कैसे किया जा सकता है?
जच एच

-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 आपको आउटऑफमैमोरी मुद्दों में ले सकते हैं। या बेहतर अभी तक, ARGB विकल्प के उपयोग से बचने का प्रयास करें।


12
ARGB_4444 को अब पदावनत किया गया है ( developer.android.com/reference/android/graphics/… )
एलन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.