मेरे पास एक ड्राइंग ऐप है जो उपयोगकर्ता को रिक्त कैनवास पर आकर्षित करने की अनुमति देता है। मैं वर्तमान बिटमैप के स्केल किए गए 'थंबनेल' को आकर्षित करने का प्रयास कर रहा हूं ताकि जब उपयोगकर्ता दृश्य में स्केल कर लेता है, तो वे थंबनेल को संदर्भित कर सकते हैं कि वे समग्र ड्रा कैनवास में कहां हैं। मेरे पास स्केलिंग काम कर रही है, और सही स्थान पर थंबनेल प्रदर्शित कर रहा हूं, लेकिन ऐसा प्रतीत होता है कि थंबनेल को बाद में ऑन ड्रॉज़ पर अपडेट नहीं किया जा रहा है जब नई लाइन/आकार जोड़े जाते हैं।एंड्रॉइड स्केलिंग कैनवास बिटमैप
तो यह है कि मैं इस दृश्य के लिए अंतर्निहित बिटमैप की पहुंच है मैं onSizeChanged में निम्नलिखित है() देखें के लिए (झलक दिखाने के लिए, आसानी से, आदि एक फाइल करने के लिए बिटमैप को बचाने के लिए सक्षम हो):
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
// set the canvas height, panning, etc, based on the now inflated View
mWidth = getWidth();
mHeight = getHeight();
mAspectRatio = mWidth/mHeight;
mPanX = 0;
mPanY = 0;
// create the Bitmap, set it to the canvas
mBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888);
mCanvas.setBitmap(mBitmap);
draw(mCanvas);
}
तब, जब उपयोगकर्ता ड्रॉ और अमान्य() कहा जाता है, मैं OnDraw() में निम्नलिखित थंबनेल उत्पन्न करने के लिए कार्य करें:
@Override
protected void onDraw(Canvas canvas) {
<snipped code that draws paths, shapes to canvas>
if (mScaled) {
Bitmap out = Bitmap.createScaledBitmap(mBitmap, (int) thumbWidth, (int) thumbHeight, false);
canvas.drawBitmap(out, null, thumbnailRectF, thumbCanvasPaint);
}
}
थंबनेल अंतरिक्ष thumbCanvasPaint का उपयोग कर thumbnailRectF द्वारा परिभाषित में प्रदर्शित किया जाता , लेकिन बाद में ड्रॉ() कॉल पर, स्केल किए गए बिटमैप में है इसके मूल स्थिति से नहीं बदला गया है, भले ही पूर्ण आकार के सक्रिय कैनवास सभी चित्रों को दिखाते हैं, आदि। कुछ परीक्षणों के आधार पर, मुझे ऐसा लगता है कि जब मैं बिटमैप को प्रारंभिक कॉल (mCanvas) के साथ सेट कर रहा हूं, बाद में ऑनसाइट्स चेंज() में निर्दिष्ट एक के बजाय अंतर्निहित बिटमैप को लिख रहे हैं।
तो, मुझे लगता है मैं यह पता लगाने की कैसे मैं एक बिटमैप है कि मैं पहुँच readliy कर सकते हैं, फिर से आकार प्रदर्शन करने के लिए, को बचाने के लिए OnDraw कैनवास टाई कोशिश कर रहा हूँ आदि this question को देखते हुए, मैंने सोचा था कि ड्रॉ (mCanvas) ; कॉल mCanvas (मेरे मामले में, mBitmap) में निर्दिष्ट बिटमैप पर चला जाएगा, लेकिन व्यावहारिक रूप से, यह काम नहीं कर रहा है, जहां तक कैनवास के लिए अद्यतन संबंधित हैं।
धन्यवाद,
पॉल
मैं इस उदाहरण whith अपने समाधान की समानता देख सकते हैं: http://www.barebonescoder.com/2010/06/android-development-simple-2d-graphics-part-1/ – Lumis
हाँ, वाह, यह लिंक्ड प्रोग्राम का निर्माण लगभग 100% समान है, मेरे मुद्दे को छोड़कर कैनवास को बिटमैप टाइप करने के साथ, आदि। इस समाधान को आजमा रहे हैं। –