2012-03-13 8 views
15

हर बार जब मैं इस कोड का उपयोग करता हूं तो कुछ भी नहीं खींचा जाता है। मुझे एक निर्दिष्ट आयताकार के अंदर बिटमैप खींचने की ज़रूरत है।विधि -canvas.drawBitmap का उपयोग करना (बिटमैप, src, dst, paint)

canvas.drawBitmap(MyBitmap, null, rectangle, null) 

मैंने ऑनलाइन देखा है लेकिन मुझे बहुत मदद नहीं मिल रही है।

उत्तर

25

संपादित


मूल उत्तर गलत है। ड्रा करने के लिए बिटमैप का एक हिस्सा निर्दिष्ट करने के लिए आप SourceRect का उपयोग कर सकते हैं। यह शून्य हो सकता है, इस मामले में पूरी छवि का उपयोग किया जाएगा।

फ्रायर टिप्पणी के अनुसार वह कुछ के नीचे चित्रित कर रहा था, मैं उस पर एक नोट जोड़ूंगा।

drawBitmap(bitmap, srcRect, destRect, paint) जेड ordering (depth) और ऑब्जेक्ट मामलों पर ड्रॉ कॉल करने का आदेश संभाल नहीं करता है।

यदि आपके पास 3 आकार खींचे जाने हैं, वर्ग, त्रिकोण और सर्कल। यदि आप वर्ग को शीर्ष पर रखना चाहते हैं तो इसे अंतिम रूप से खींचा जाना चाहिए।


आपको कोई स्रोत निर्दिष्ट नहीं किया गया है, इसलिए इसे कुछ भी नहीं खींचा गया है।

उदाहरण:

आप एक बिटमैप 100x100 पिक्सल है। आप पूरे बिटमैप को आकर्षित करना चाहते हैं।

canvas.drawBitmap(MyBitmap, new Rect(0,0,100,100), rectangle, null); 

आप बिटमैप के केवल बाएं आधे भाग को आकर्षित करना चाहते हैं।

canvas.drawBitmap(MyBitmap, new Rect(0,0,50,100), rectangle, null); 

आप स्रोत रेक्ट निर्दिष्ट करने की आवश्यकता, स्रोत रेक्ट चौड़ाई को 0,0 से कहीं भी एक आयत, बिटमैप की ऊंचाई हो सकता है।

+2

src - अशक्त हो सकता है। बिटमैप का सबसेट ---- dst- आयताकार है कि बिटमैप को स्केल/अनुवाद करने के लिए अनुवादित किया जाएगा -------- मैंने कोशिश की कि आपने जो कहा है लेकिन यह अभी भी किसी कारण से नहीं दिख रहा है .... –

+0

प्रतीक्षा करें कि यह काम करना शुरू कर दिया, मैं स्क्रीन पर आयताकारों के नीचे बिटमैप्स खींच रहा था। सहायता के लिए धन्यवाद! –

+0

क्या आप जोड़ सकते हैं कि आप आयताकारों के नीचे बिटमैप कैसे चित्रित कर रहे थे, मुझे एक ही समस्या है और मैं घंटों तक फंस गया हूं! – JehandadK

20

मुख्य आइटम जब रेक्ट को परिभाषित याद करने के लिए है:

  • छोड़ दिया < सही और शीर्ष < नीचे

रेक्ट स्क्रीन निर्देशांक में (सकारात्मक वाई नीचे है) ...

मुझे रेक्ट ए के बारे में सोचने में मदद मिलती है rguments

(left, top, right, bottom) 

(X, Y, X + Width, Y + Height) 

जहां पहला, दूसरा स्प्राइट छवि के ऊपर बाईं ओर है।

नोट: यदि किसी विशेष स्थान पर छवि को केन्द्रित करना चाहते हैं, तो उन मानों को आधा स्प्राइट चौड़ाई & ऊंचाई से ऑफ़सेट करना याद रखें।उदाहरण के लिए:

int halfWidth = Width/2; 
int halfHeight = Height/2 
Rect dstRectForRender = new Rect(X - halfWidth, Y - halfHeight, X + halfWidth, Y + halfHeight); 
canvas.drawBitmap (someBitmap, null, dstRectForRender, null); 

इस पूरे मूल छवि का उपयोग करता है (के बाद से src रेक्ट रिक्त है) और यह मापता है आकार और स्थिति dstRectForRender से ... और डिफ़ॉल्ट पेंट का उपयोग कर फिट करने के लिए।

+0

इस उत्तर के बिना रैली विषम thx इसे समझने के लिए असंभव है :) –

+0

कैनवास के मिडाइल के लिए इस आइकन को कैसे संरेखित करें ?? – Gibs

1

मुझे नहीं पता कि यह मेरे लिए क्यों काम करता है!

Rect rectangle = new Rect(0,0,100,100); 
canvas.drawBitmap(bitmap, null, rectangle, null); 

धन्यवाद :)

संबंधित मुद्दे