2011-05-17 12 views
11

मैंने कक्षा का उपयोग करके एक लाइन ऑब्जेक्ट की कार्यक्षमता बढ़ा दी है जो एक लाइन हैंडल को अपने कन्स्ट्रक्टर को इनपुट तर्क के रूप में लेता है। इस वर्ग में एक माउसओवर लाइन का पता लगाने के लिए WindowMouseMotion श्रोता बनाता है जो रेखा को हाइलाइट करता है और कुछ पंक्ति/डेटा गुणों को सेट करने के लिए नियंत्रण वाले पैनल को प्रदर्शित करता है। यह अच्छी तरह से काम कर रहा है।विरासत के माध्यम से ग्राफिक्स ऑब्जेक्ट्स की कार्यक्षमता का विस्तार करना संभव है?

अब मैं इस कक्षा को पहचानने और लाइन के ObjectBeingDestroyed ईवेंट को सुनकर हटाई गई रेखा का जवाब देने का प्रयास कर रहा हूं। मेरा सवाल यह है कि लाइन के हैंडल को संग्रहीत करके इस वर्ग को लाइन ऑब्जेक्ट से जोड़ना सबसे अच्छा समाधान या है, जिससे लाइन क्लास को विरासत में प्राप्त करना संभव है? मैंने MATLAB दस्तावेज़ों को देखा है और ऑनलाइन खोज की है लेकिन ग्राफिक्स कक्षाओं से विरासत में निश्चित जानकारी नहीं मिल सकती है।

+0

यह एक बहुत विस्तृत विवरण है और आपको जल्द ही कोई जवाब दिखाई नहीं दे रहा है। [आप इसे मैथवर्क्स से पूछना चाहेंगे] (http://www.mathworks.com/matlabcentral/answers/?s_cid=HP_FR_answers)। –

+0

@ क्रिस ए - लिंक के लिए धन्यवाद। मैं MATLAB केंद्रीय समाचार समूह के बारे में जानता था लेकिन मुझे किसी भी तरह से उत्तर अनुभाग से चूक गया। यहां मेरी पोस्ट का एक लिंक यहां दिया गया है: http://www.mathworks.com/matlabcentral/answers/7737-is-it-possible-to-extend-graphics-objects- कार्यक्षमता- थ्रू- विरासत –

+0

विरासत पर संरचना को प्राथमिकता दें: http://stackoverflow.com/questions/49002/prefer-composition-over-inheritance – Mikhail

उत्तर

2

बिल्टिन हैंडल ग्राफिक्स कक्षाओं को उप-वर्ग करना संभव है। http://undocumentedmatlab.com/blog/udd-properties/ पर एक उदाहरण है। यह विशेष रूप से अनियंत्रित यूडीडी तंत्र का उपयोग करता है। मैथवर्क्स ने कई अवसरों पर कहा है कि यूडीडी आंतरिक विकास के लिए है और केवल असमर्थित और असमर्थित है। यह ध्यान देने योग्य है कि मैथवर्क्स द्वारा प्रदान किए गए एम कोड में यूडीडी सबक्लासिंग के कई उदाहरण हैं। इसके अलावा अगर उन्हें लगता है कि यूडीडी गुप्त में कुछ रखने का एक विशिष्ट कारण है तो यह या तो अंतर्निहित या पीसीड किया गया है। इसलिए मुझे लगता है कि यदि आपको मैथवर्क्स द्वारा प्रदान किए गए स्रोत कोड में चीजों को कैसे करना है, तो आपको इसका उपयोग करने में स्वतंत्र महसूस होना चाहिए।

1

इस प्रतिक्रिया को MATLAB Central Answers पर मिला: "ग्राफ़िक ऑब्जेक्ट्स (/ सबक्लास) से प्राप्त करने के लिए कोई दस्तावेज तरीका नहीं है। मुझे लगता है कि नियम यह है कि यदि आप इसे दस्तावेज़ में नहीं ढूंढ पाते हैं तो यह समर्थित नहीं है।"

एक सुझाव है कि नए एचजी 2 कक्षा here को विस्तारित करना संभव हो सकता है लेकिन यह आधिकारिक गणित की जानकारी नहीं है।

+1

आप वास्तव में लाइन के ऑब्जेक्टबिंगडिस्ट्रॉइड ईवेंट को सुन सकते हैं। मैटलैब अपने कोड में आंतरिक रूप से कई बार करता है (उदाहरण के लिए javacomponent.m पर एक नज़र डालें)। शायद एक आसान तरीका लाइन की DeleteFcn प्रॉपर्टी में कॉलबैक फ़ंक्शन सेट करना है। –

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