2010-05-21 15 views
6

जब मैं ग्राफिक्स का ऑब्जेक्ट बनाने का प्रयास करता हूं, तो निम्न कार्य क्यों नहीं करता है?System.Drawing.Graphics के डिफ़ॉल्ट कन्स्ट्रक्टर को कैसे हटाया जाता है?

System.Drawing.Graphics graphicsObj = new System.Drawing.Graphics(); 

मैं ग्राफिक्स के लिए एक कस्टम निर्माता पता लगाने की कोशिश (मुझे पता है कि मैं एक private System.Windows.Forms.Panel Obj; बना सकते हैं और अगर मैं यह काम करना चाहता था तो CreateGraphics() कर रहा हूँ), लेकिन मैं एक नहीं मिल सका। माइक्रोसॉफ्ट ने इसे परिभाषित किया, या इसे कैसे अवरुद्ध किया?

उत्तर

10

डिफ़ॉल्ट कंस्ट्रक्टर्स केवल सी # संकलक द्वारा बनाई अगर कोई अन्य घोषित निर्माता ये हैं कर रहे हैं। इस मामले में ऐसा लगता है कि सभी रचनाकार आंतरिक या निजी हैं। मूल रूप से आप एक अपने आप का निर्माण नहीं है - आप एक छवि, नियंत्रण या जो कुछ भी से एक के लिए पूछना, या रंग घटनाओं आदि के लिए एक आधार पर प्राप्त होने

0

माइक्रोसॉफ्ट नहीं दिया ग्राफिक्स कंस्ट्रक्टर्स आपत्ति है। उदाहरण बनाने का एकमात्र तरीका स्थैतिक तरीकों, जैसे CreateGraphics() या FromImage() के माध्यम से है। यही कारण है कि आपका कोड काम नहीं करता है। इसके अलावा, एक sidenote के रूप में, ग्राफिक्स वस्तु से विरासत में नहीं मिल सकता है।

+4

माइक्रोसॉफ्ट के साथ एक बिटमैप को ड्रा करने के लिए ड्रा करने के लिए ड्रा ग्राफिक्स वर्ग रचनाकारों को दिया, अन्यथा संकलक एक सार्वजनिक डिफ़ॉल्ट कन्स्ट्रक्टर उत्पन्न किया होगा। माइक्रोसॉफ्ट ने अभी तक किसी भी रचनाकार को सार्वजनिक नहीं किया है। –

+0

सहमत! वास्तव में, रचनाकार हैं। बस कोई भी जिसे सार्वजनिक रूप से एक्सेस किया जा सकता है – Icemanind

3

ऐसा नहीं है कि ग्राफिक्स एक डिफ़ॉल्ट निर्माता नहीं हो सकता intuitively स्पष्ट है। आप हमेशा चाहते हैं कि आप कहीं भी दिखाई देने के लिए आकर्षित करें। एक डिफ़ॉल्ट कन्स्ट्रक्टर ड्राइंग के गंतव्य का चयन नहीं कर सका।

  • Graphics.FromImage():

    तरीके एक ग्राफिक्स वस्तु प्राप्त करने के लिए। आप एक बिटमैप में आकर्षित करेंगे। छवियों का आकार बदलते समय या "कैनवास" बनाने के लिए आम।

  • Control.CreateGraphics()। चलो आप सीधे स्क्रीन पर आकर्षित करते हैं। हमेशा गलत, इसके बजाय उपयोग करें:
  • पेंट ईवेंट। ई। ग्राफिक्स तर्क आपको स्क्रीन पर आकर्षित करने देता है।
  • प्रिंटपेज घटना। प्रिंट डॉक्यूमेंट क्लास के लिए, ई। ग्राफिक्स पेपर के टुकड़े पर समाप्त होता है।
  • Graphics.FromHdc()। निम्न-स्तर पी/Invoke कोड में उपयोग करें, विंडोज़ डिवाइस संदर्भ में खींचता है।
  • Graphics.FromHwnd()। ऊपर के रूप में, सीधे एक मूल खिड़की के लिए खींचता है।

सारांश में:

  • पेंट घटना के साथ स्क्रीन
  • PrintPage घटना के साथ प्रिंटर
  • FromImage()
असल
संबंधित मुद्दे