GDI + आकार, फोंट, चित्र या आम तौर पर ग्राफिक में कुछ भी आकर्षित करने का तरीका है मूल दृश्य नेट।
यह आलेख विजुअल बेसिक .NET में GDI + का उपयोग करने के लिए एक पूर्ण परिचय का पहला भाग है।
GDI + .NET का एक असामान्य हिस्सा है। .NET (GDI + Windows XP के साथ जारी किया गया था) से पहले यह यहाँ था और यह .NET फ्रेमवर्क के समान अपडेट साइकिल को साझा नहीं करता है। Microsoft का प्रलेखन आमतौर पर बताता है कि Microsoft Windows GDI + एक एपीआई है C / C ++ विंडोज ओएस में प्रोग्रामर। लेकिन जीडीआई + भी शामिल है VB.NET में उपयोग किए जाने वाले नामस्थान सॉफ्टवेयर आधारित ग्राफिक्स प्रोग्रामिंग के लिए।
WPF
लेकिन ऐसा नहीं है केवल Microsoft द्वारा प्रदान किया गया ग्राफिक्स सॉफ्टवेयर, खासकर फ्रेमवर्क 3.0 के बाद से। जब विस्टा और 3.0 पेश किए गए थे, पूरी तरह से नया WPF इसके साथ पेश किया गया था। WPF एक उच्च स्तरीय, ग्राफिक्स के लिए हार्डवेयर त्वरित दृष्टिकोण है। टिम काहिल के रूप में, Microsoft WPF सॉफ्टवेयर टीम के सदस्य, WPF के साथ यह कहते हैं, "आप उच्च-स्तरीय निर्माणों का उपयोग करके अपने दृश्य का वर्णन करते हैं, और हम इसकी चिंता करेंगे बाकी। "और यह तथ्य कि यह हार्डवेयर त्वरित है इसका मतलब है कि आपको अपने पीसी प्रोसेसर के आकृतियों के संचालन को नीचे खींचने की ज़रूरत नहीं है स्क्रीन। असली काम आपके ग्राफिक्स कार्ड द्वारा किया जाता है।
हम पहले भी यहाँ रहे हैं। प्रत्येक "महान लीप फॉरवर्ड" आमतौर पर कुछ स्टंबल के साथ होता है, और इसके अलावा, WPF के लिए GDI + कोड के बाइट्स के माध्यम से अपने तरीके से काम करने में वर्षों लगेंगे। WPF के बाद से यह विशेष रूप से सच है कि आप बहुत सारे मेमोरी और हॉट ग्राफिक्स कार्ड के साथ उच्च-शक्ति वाली प्रणाली के साथ काम कर रहे हैं। इसलिए कई पीसी विस्टा नहीं चला सकते थे (या कम से कम, विस्टा "एयरो" ग्राफिक्स का उपयोग करें) जब यह पहली बार पेश किया गया था। इसलिए यह श्रृंखला किसी भी और सभी के लिए साइट पर उपलब्ध होना जारी है, जिन्हें इसका उपयोग करने की आवश्यकता है।
अच्छा Ol 'कोड
GDI + ऐसा कुछ नहीं है जिसे आप VB.NET के अन्य घटकों की तरह एक फ़ॉर्म पर खींच सकते हैं। इसके बजाय, GDI + वस्तुओं को आम तौर पर पुराने तरीके से जोड़ना होगा - उन्हें खरोंच से कोड करके! (हालांकि, VB .NET में बहुत आसान कोड स्निपेट शामिल हैं जो वास्तव में आपकी सहायता कर सकते हैं।)
GDI + को कोड करने के लिए, आप बहुत से .NET नाम स्थान से ऑब्जेक्ट और उनके सदस्यों का उपयोग करते हैं। (वर्तमान समय में, ये वास्तव में विंडोज ओएस ऑब्जेक्ट के लिए केवल आवरण कोड हैं जो वास्तव में काम करते हैं।)
नेमस्पेस
GDI + में नामस्थान हैं:
प्रणाली। चित्रकारी
ये है कोर GDI + नामस्थान। यह मूल प्रतिपादन के लिए वस्तुओं को परिभाषित करता है (फोंट्स, कलम, बुनियादी ब्रश, आदि) और सबसे महत्वपूर्ण वस्तु: ग्राफिक्स। हम इसे केवल कुछ पैराग्राफों में देखेंगे।
प्रणाली। चित्रकारी। Drawing2D
यह आपको अधिक उन्नत दो-आयामी वेक्टर ग्राफिक्स के लिए ऑब्जेक्ट देता है। उनमें से कुछ ढाल ब्रश, पेन कैप, और ज्यामितीय रूपांतर हैं।
प्रणाली। चित्रकारी। इमेजिंग
यदि आप चित्रमय चित्र बदलना चाहते हैं - अर्थात, पैलेट को बदलें, छवि मेटाडेटा निकालें, मेटाफ़ाइल्स को हेरफेर करें, और इसके बाद - यह वह है जो आपको चाहिए।
प्रणाली। चित्रकारी। मुद्रण
मुद्रित पृष्ठ पर छवियों को प्रस्तुत करने के लिए, प्रिंटर के साथ ही बातचीत करें, और प्रिंट कार्य के समग्र स्वरूप को प्रारूपित करें, यहां वस्तुओं का उपयोग करें।
प्रणाली। चित्रकारी। टेक्स्ट
आप इस नाम स्थान के साथ फोंट के संग्रह का उपयोग कर सकते हैं।
ग्राफिक्स वस्तु
GDI + से शुरू होने वाला स्थान है ग्राफिक्स वस्तु। यद्यपि आपके द्वारा खींची गई चीजें आपके मॉनीटर या प्रिंटर पर दिखाई देती हैं, ग्राफिक्स ऑब्जेक्ट "कैनवास" है जिसे आप खींचते हैं।
लेकिन GDI + का उपयोग करते समय ग्राफिक्स ऑब्जेक्ट भी भ्रम के पहले स्रोतों में से एक है। ग्राफिक्स ऑब्जेक्ट हमेशा एक विशेष के साथ जुड़ा हुआ है डिवाइस का संदर्भ. तो पहली समस्या जो जीडीआई + के लगभग हर नए छात्र का सामना है, "मुझे ग्राफिक्स ऑब्जेक्ट कैसे मिलेगा?"
मूल रूप से दो तरीके हैं:
- आप उपयोग कर सकते हैं इ ईवेंट पैरामीटर जिसे पास किया गया है OnPaint के साथ घटना PaintEventArgs वस्तु। कई घटनाएं गुजरती हैं PaintEventArgs और आप उस ग्राफिक्स ऑब्जेक्ट को संदर्भित करने के लिए उपयोग कर सकते हैं जो पहले से ही डिवाइस संदर्भ द्वारा उपयोग किया जा रहा है।
- आप उपयोग कर सकते हैं CreateGraphics ग्राफिक्स ऑब्जेक्ट बनाने के लिए डिवाइस के संदर्भ के लिए विधि।
यहाँ पहली विधि का एक उदाहरण दिया गया है:
संरक्षित उप-संत (_ ByVal e As System। खिड़कियाँ। फार्म। PaintEventArgs) मंद जी ग्राफिक्स = ई के रूप में। ग्राफिक्स। जी। DrawString ("विज़ुअल बेसिक के बारे में" & vbCrLf _ & "और GDI +" & vbCrLf & "A Great Team", _ नया फ़ॉन्ट ("टाइम्स न्यू रोमन", 20), _। ब्रश। फायरब्रिक, 0, 0) मायबेस। ऑनपेंट (ई) अंत उप
चित्रण प्रदर्शित करने के लिए यहां क्लिक करें
इसे स्वयं को कोड करने के लिए एक मानक विंडोज एप्लिकेशन के लिए फॉर्म 1 कक्षा में जोड़ें।
इस उदाहरण में, फॉर्म के लिए पहले से ही एक ग्राफिक्स ऑब्जेक्ट बनाया गया है फॉर्म 1. आपके सभी कोड को उस ऑब्जेक्ट का एक स्थानीय उदाहरण बनाना होगा और उसका उपयोग उसी फॉर्म पर आकर्षित करने के लिए करना होगा। ध्यान दें कि आपका कोड ओवरराइड OnPaint तरीका। इसीलिए MyBase। ऑनपेंट (ई) अंत में निष्पादित किया जाता है। आपको यह सुनिश्चित करने की आवश्यकता है कि यदि आधार ऑब्जेक्ट (आप जिसे ओवरराइड कर रहे हैं) कुछ और कर रहा है, तो इसे करने का मौका मिलता है। अक्सर, आपका कोड इसके बिना काम करता है, लेकिन यह एक अच्छा विचार है।
PaintEventArgs
आप का उपयोग करके एक ग्राफिक्स ऑब्जेक्ट भी प्राप्त कर सकते हैं PaintEventArgs आपके कोड में सौंपी गई वस्तु OnPaint तथा ऑनपेंटबैकग्राउंड तरीके एक फॉर्म का। PrintPageEventArgs में पारित हुआ परचे को छापें ईवेंट में प्रिंटिंग के लिए एक ग्राफिक्स ऑब्जेक्ट होगा। कुछ छवियों के लिए ग्राफिक्स ऑब्जेक्ट प्राप्त करना भी संभव है। यह आपको उस छवि पर सही पेंट करने दे सकता है जिस तरह से आप फॉर्म या कंपोनेंट पर पेंट करेंगे।
आयोजन प्रबंधकर्ता
एक विधि की एक और विविधता के लिए एक घटना हैंडलर जोड़ना है रंग फार्म के लिए घटना। यहाँ वह कोड दिखता है:
निजी उप फॉर्म 1_पेंट (_)। वस्तु के रूप में ByVal प्रेषक, _। ByVal e As System। खिड़कियाँ। फार्म। पेंटेवेंटअर्ज) _। मुझे संभालता है। रंग। डिम जी अस ग्राफिक्स = ई। ग्राफिक्स। जी। DrawString ("विज़ुअल बेसिक के बारे में" & vbCrLf _ & "और GDI +" & vbCrLf & "A Great Team", _ नया फ़ॉन्ट ("टाइम्स न्यू रोमन", 20), _। ब्रश। फायरब्रिक, 0, 0) अंत उप
CreateGraphics
अपने कोड के लिए एक ग्राफिक्स ऑब्जेक्ट प्राप्त करने के लिए दूसरी विधि एक का उपयोग करता है CreateGraphics वह विधि जो कई घटकों के साथ उपलब्ध है। कोड इस तरह दिखता है:
निजी उप बटन1_क्लिक करें (_ सिस्टम के रूप में ByVal प्रेषक। वस्तु, _। ByVal e As System। EventArgs) _। बटन 1 बटन। क्लिक करें। मंद जी = मुझे। CreateGraphics। जी। DrawString ("विज़ुअल बेसिक के बारे में" & vbCrLf _ & "और GDI +" & vbCrLf & "A Great Team", _ नया फ़ॉन्ट ("टाइम्स न्यू रोमन", 20), _। ब्रश। फायरब्रिक, 0, 0) अंत उप
यहाँ कुछ अंतर हैं। इस में है Button1.Click घटना क्योंकि जब फॉर्म 1 में ही repaints भार घटना, हमारे ग्राफिक्स खो गए हैं। इसलिए हमें उन्हें एक बाद की घटना में जोड़ना होगा। यदि आप इसे कोड करते हैं, तो आप देखेंगे कि ग्राफिक्स कब खो गए हैं फॉर्म 1 फिर से होना है। (इसे देखें और फिर से अधिकतम करें।) पहली विधि का उपयोग करने के लिए यह एक बड़ा लाभ है।
अधिकांश संदर्भ पहली विधि का उपयोग करने की सलाह देते हैं क्योंकि आपके ग्राफिक्स स्वचालित रूप से फिर से रंग जाएंगे। GDI + मुश्किल हो सकता है!