2012-06-22 21 views
5

मैं एक आइकन का उपयोग करने की कोशिश कर रहा हूं जिसे मैंने एक बटन के रूप में संसाधन के रूप में जोड़ा है। मुझे पता है कि यह संभव है क्योंकि मैं इसे अन्य परियोजनाओं में डिजाइनर के माध्यम से कर सकता हूं। हालांकि, मैं कोड के साथ ऐसा करने की कोशिश कर रहा हूं। मैंने this question के स्वीकृत उत्तर में चरणों का पालन करके आइकन को मेरे प्रोजेक्ट के संसाधन के रूप में जोड़ा। संसाधन का नाम CancelButtonIcon है।मैं किसी संसाधन फ़ाइल से किसी आइकन पर किसी बटन पर उपयोग के लिए आइकन कैसे डालूं?

अब, मैं इस कोड के साथ एक मानक बटन पर छवि के रूप में है कि आइकन जोड़ने के लिए कोशिश कर रहा हूँ:

Cannot convert type 'System.Drawing.Icon' to 'System.Drawing.Image' 

कोड में:

this.CancelButton.Image = (System.Drawing.Image)Properties.Resources.CancelButtonIcon; 

हालांकि, मैं एक त्रुटि संदेश मिलता कि दृश्य स्टूडियो स्वत: जनरेट करता है जब मैं डिजाइनर उपयोग करें, यह इस तरह दिखता है:

((System.Drawing.Image)(resources.GetObject("SaveButton.Image"))); 

जो गुण विंडो के माध्यम से मैन्युअल रूप से संसाधन जोड़ने से परिणाम। मैं इस आइकन संसाधन को एक छवि में कैसे परिवर्तित कर सकता हूं ताकि इसका उपयोग बटन पर किया जा सके? डिजाइनर के माध्यम से इसे जोड़ना एक विकल्प नहीं है (यह बटन प्रोग्रामेटिक रूप से बनाया गया है और इस प्रकार डिजाइनर में मौजूद नहीं है)।

उत्तर

8

आप इस उद्देश्य के लिए Icon.ToBitmap विधि का उपयोग कर सकते हैं। ध्यान दें कि Bitmap एक Image है।

CancelButton.Image = Properties.Resources.CancelButtonIcon.ToBitmap(); 
+0

बिल्कुल सही और तात्कालिक। एक बार समय सीमा समाप्त हो जाने के बाद मैं इसे स्वीकार करूंगा। –

+0

असल में इसे लागू करने से मुझे कुछ नोटिस मिल जाता है। जब मैं डिज़ाइनर में बटन में आइकन जोड़ता हूं, तो वे स्वचालित रूप से स्केल किए जाते हैं ताकि वे बटन फिट कर सकें। ऐसा तब नहीं होता जब मैं आपके कोड का उपयोग करता हूं, इसलिए आइकन बटन से * अधिक * बड़े होते हैं। –

+0

यदि आप स्केल करना चाहते हैं, तो 'नया बिटमैप (Properties.Resources.CancelButtonIcon.ToBitmap(), CancelButton.Size) ' – Ani

0

सुनिश्चित नहीं हैं कि क्यों, लेकिन किसी भी समय मैं स्वीकार किए जाते हैं जवाब के दृष्टिकोण का उपयोग करने की कोशिश की, .ToBitmap() कॉल मुझे सीमा अपवाद से बाहर सरणी सूचकांक दे रहा था। मैंने इसे इस तरह से हल करके हल किया:

System.Drawing.Icon.FromHandle(Properties.Resources.CancelButtonIcon.Handle).ToBitmap(); 

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

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