2012-05-19 29 views
6

क्या पॉइंट ऑब्जेक्ट के लिए काम करने के लिए + ऑपरेटर प्राप्त करने का कोई तरीका है?एक दूसरे को दो अंक जोड़ने के दौरान + ऑपरेटर काम कैसे करें?

उदाहरण के लिए, इस छोटे से टुकड़ा:

this.cm1.Show((MouseEventArgs)e.Location+this.i_rendered.Location); 

तुम देखो, मैं eachother करने के लिए दो अंक जोड़ने का प्रयास करते। यह सिर्फ काम नहीं करता है (जो अपेक्षित था)। मुझे यह काम करना अच्छा लगेगा।

कोई भी विचार?

+0

आप किस बिंदु के बारे में बात कर रहे हैं? ठीक ठीक? किस नामस्थान में? क्या यह आपका अपना प्रकार है? आप अतिरिक्त होने के परिणाम की क्या अपेक्षा करते हैं? – Oded

+0

क्या आपने यह.cm1 कोशिश की है। दिखाएं (((माउसइवेंटआर्ग) ई)। स्थान + this.i_rendered.Location); – Blablablaster

+0

@ ओडेड -> सिस्टम। ड्रॉइंग.पॉइंट – Tgys

उत्तर

7

यह आपके द्वारा अपेक्षित तरीके से होने वाला नहीं है। Point संरचना का एकमात्र ओवरलोड + (अतिरिक्त) ऑपरेटर one that translates the coordinates of the Point by a Size प्रदान करता है।

दो Point संरचनाओं को एक साथ जोड़ने का कोई तरीका नहीं है, और मुझे यह भी सुनिश्चित नहीं है कि इसका क्या अर्थ होगा।

you cannot write extension methods that overload operators पर विचार करते हुए, इसे निकालने में बहुत अधिक समय बर्बाद न करें।

सौभाग्य से, एक संकलित भाषा में, कोड को कई पंक्तियों में विभाजित करने के लिए कोई दंड नहीं है।

Point newLocation = new Point(e.Location.X + this.i_rendered.Location.X, 
           e.Location.Y + this.i_rendered.Location.Y); 
this.cm1.Show(newLocation); 

वैकल्पिक रूप से आप Offset method इस्तेमाल कर सकते हैं,, लेकिन मैं आश्वस्त नहीं हूँ कि पठनीयता को बढ़ाता है: तो आप अपने कोड इस प्रकार फिर से लिख सकते हैं।

+0

एए दुखी है कि यह वास्तव में संभव नहीं है। मुझे लगता है कि मैं उस तरह से जाऊंगा, यह कम से कम सबसे अच्छा पठनीय है। - धन्यवाद :)। – Tgys

+0

मेरा जवाब जांचें। शायद आपको दूसरे आकार को 'आकार' में डालना होगा? –

6

मैंने System.Drawing.Point (कोडी ग्रे के उत्तर में लिंक) के लिए प्रलेखन पढ़ा है, और इसमें एक उदाहरण विधि Offset है। यह विधि वर्तमान Point को म्यूटेट करती है (डिजाइनरों ने Point को एक परिवर्तनीय संरचना बनाने का विकल्प चुना है!)।

var p1 = new Point(10, 20); 
var p2 = new Point(6, 7); 
p1.Offset(p2); // will change p1 into the sum! 

समान दस्तावेज़ मैं भी Point से Size का सुस्पष्ट रूपांतरण देखने में:

तो यहाँ एक उदाहरण है। इसलिए, इसे आजमाएं:

var p1 = new Point(10, 20); 
var p2 = new Point(6, 7); 
Point pTotal = p1 + (Size)p2; // your solution? 
+1

दूसरा स्निपेट कुछ हद तक बंद हो जाता है, हां, हालांकि, यह बहुत भ्रमित दिखता है। मुझे लगता है कि कोडी ग्रे का जवाब सबसे आसान और इस मामले में आवेदन करने का सबसे स्पष्ट समाधान है। – Tgys

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

  • कोई संबंधित समस्या नहीं^_^