2013-10-19 4 views
22

में वास्तव में आकर्षित करने या निर्देशांक को चित्रित करने के तरीके को समझना मैं कैनवास पर एक आयत खींचने की कोशिश कर रहा हूं और मुझे एंड्रॉइड के आयताकार ड्रा की गहराई को समझने के लिए परेशानी का सामना करना पड़ रहा है। मैंने ट्यूटोरियल और हर संभव पढ़ा है लेकिन मैं अटक गया हूं।एंड्रॉइड

यहां छवि में, लाल आयताकार मेरा लक्ष्य है। enter image description here

किसी भी आयताकार आकार के बावजूद मुझे आधार के ऊपर और आयताकार के बीच में लाल आयताकार बिट खींचने की आवश्यकता है। यहां का सबसे बुरा सपना मैं एक्स, वाई चौड़ाई और ऊंचाई निर्देशांक को समझ रहा हूं।

क्या कोई यह समझा सकता है कि गणित कैसे काम करता है, कभी-कभी हम ऊपर जाते हैं, वाई बहुत छोटे तक पहुंचता है लेकिन समान चौड़ाई निर्देशांक अधिक होते हैं। और मैं कभी भी लाल आंतरिक आयताकार को उचित ठहराने में सक्षम नहीं हूं। कुछ स्क्रीन में यह किसी अन्य में अच्छी तरह से काम करता है, यह विफल रहता है। लाल आयताकार कभी-कभी पैरेंट आयत से बाहर आ जाता है।

एजेंडा कैसे काम निर्देशांक को समझते हैं और भीतरी लाल आयत

की अखंडता यह एक उदाहरण के आधार पर एक विवरण प्राप्त करने के लिए महान हो जाएगा सुनिश्चित करने के लिए है। मैं आयत

+1

रेक्ट (topleftx, toplefty, bottomrightx, bottomrighty) – JRowan

+0

मैं इन मानकों को पता है, लेकिन मैं समझ एक्स करने में असमर्थ हूँ, वाई मूल्यों, यह कैसे स्थापित करने के लिए .. किसी भी उदाहरण स्पष्टीकरण होगा मदद –

+0

@JRowan मेरे द्वारा पोस्ट आयताकार के बीच, ये param मूल्य कहां सेट करता है ?? –

उत्तर

14

एक्स क्षैतिज चलाता है, बाएं से दाएं ड्राइंग के लिए

void drawRect(float left, float top, float right, float bottom, Paint paint) 

using- कर रहा हूँ। वाई ऊपर से नीचे तक लंबवत चलता है। यह आपके ग्राफिक्स पर बिल्कुल वैसा ही है। तो (0/0) शीर्ष बाईं ओर है।

जब आप "ऊपर" जाते हैं तो निश्चित रूप से छोटा हो जाएगा, क्योंकि यह ऊपर से नीचे तक बढ़ता है।

आपको ListViews जैसे तत्वों को डालने पर ध्यान देना होगा, ये आपके विचारों के लिए आंशिक (या नया, आप नहीं बता सकते) कैनवास देंगे। इन विचारों में 0x0 पर शीर्ष/बाएं स्थिति होगी। यदि आपको पूर्ण आवश्यकता है तो आपको बाद में View.getLocationOnScreen() पर कॉल करना होगा और ऑफ़सेट स्वयं की गणना करना होगा।

+0

meredrica: ये मान पिक्सेल में हैं? – Aniruddha

+0

हाँ मान पिक्सेल में हैं। – meredrica

28

canvas.drawRect(left,top,right,bottom,paint);

इस

  1. बाईं ओर: कैनवास के बाईं ओर से आयताकार के बाईं ओर की दूरी।

  2. शीर्ष: कैनवास के बाईं ओर से आयताकार के दाईं ओर की दूरी: कैनवास

  3. सही के शीर्ष की ओर से आयताकार के नीचे के हिस्से में की दूरी।
  4. नीचे: कैनवास के शीर्ष तरफ से आयताकार के ऊपरी हिस्से की दूरी।
+10

मुझे लगता है कि 2 और 4 गलत हैं। उन्हें होना चाहिए: 2. शीर्ष: कैनवास के शीर्ष किनारे से आयताकार के शीर्ष पक्ष की दूरी 4. नीचे: कैनवास के शीर्ष तरफ से आयताकार के बोटम पक्ष की दूरी। –

+0

सावन: क्या ये मान पिक्सेल में हैं? – Aniruddha

+0

सरल और सही स्पष्टीकरण। वास्तव में मुझे यह समझने के लिए क्या चाहिए। –

15

यह समझ में आता है।

float left = 100, top = 100; // basically (X1, Y1) 

float right = left + 100; // width (distance from X1 to X2) 
float bottom = top + 100; // height (distance from Y1 to Y2) 

इस प्रकार

RectF myRectum = new RectF(left, top, right, bottom); 
canvas.drawRect(myRectum, myPaint); 
+1

मुझे लगता है कि आयत परिवर्तनीय नाम सबसे मजेदार चीज़ है जिसे मैंने कभी देखा है StackOverflow पर। एक्सडी – IRGeekSauce