/ / एंड्रॉइड में कैनवास पर बिटमैप छवि का हिस्सा दिखाएं - एंड्रॉइड, कैनवास, मैट्रिक्स, बिटमैप, ड्राबिटमैप

एंड्रॉइड में कैनवास पर बिटमैप छवि का हिस्सा दिखाएं - एंड्रॉइड, कैनवास, मैट्रिक्स, बिटमैप, drawbitmap

मैं अपने Android ऐप में एक Magnify टूल बनाने की कोशिश कर रहा हूं। इसके लिए, मेरे पास एक ImageView है, जिसे मैंने बिटमैप में परिवर्तित किया है (कुछ ज़ूम / स्केल फैक्टर के साथ)।

imageView.setDrawingCacheEnabled(true);
Bitmap drawingCache = imageView.getDrawingCache(true);
Matrix matrix = new Matrix();
matrix.postScale(5, 5);

Bitmap viewCapture = Bitmap.createBitmap(drawingCache, 0, 0,
drawingCache.getWidth(),
drawingCache.getHeight(),
matrix, true);
imageView.setDrawingCacheEnabled(false);

अब, मैं अपने कैनवास पर इस बिटमैप छवि "viewCapture" को चित्रित कर रहा हूं। यहां, मैं चाहता हूं कि छवि का केवल एक भाग कैनवास पर प्रस्तुत किया जाए।

मैंने दृष्टिकोण का उपयोग करने की कोशिश की: "मैट्रिक्स पर setRectToRect ()," कैनवस।ट्रैबिटमैप (बिटमैप, src, dst, पेंट) "। लेकिन, उचित रूप से काम नहीं किया।

भूतल व्यू का उपयोग करना सहायक होगा? क्या कोई इस स्थिति में आया है? कृपया अपने विचार / विचार पोस्ट करें।

उत्तर:

जवाब के लिए 3 № 1

सिर्फ निम्नलिखित का उपयोग क्यों नहीं करते?

 Canvas.drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint)

src बिटमैप के किस क्षेत्र में आप आकर्षित करना चाहते हैं और से मेल खाती है dst कहते हैं, जहां आप बिटमैप तैयार करना चाहते हैं। आप इसके बारे में यहां और अधिक पढ़ सकते हैं: http://developer.android.com/reference/android/graphics/Canvas.html


जवाब के लिए 0 № 2

जब मैं ऐसा करता हूं, तो मुझे क्रॉप्ड इमेज के बजाय बिटमैप की एक छोटी छवि मिलती है। निम्नलिखित स्निपेट है जिसका मैंने उपयोग किया है।

            Canvas c = holder.lockCanvas();
c.drawRGB(10, 10, 10);
Rect src = new Rect((int)x - _image.getWidth(), (int) y - _image.getHeight(), (int)x + _image.getWidth(), (int) y + _image.getHeight());
RectF dst = new RectF((int)x - 50, (int) y - 50, (int)x + 50, (int) y + 50);
c.drawBitmap(_image, src, dst, null);
holder.unlockCanvasAndPost(c);