2008-09-30 23 views
31

पर आइकन के रूप में प्रदर्शित एम्बेड किए गए आइकन संसाधन चाहते हैं यह एक साक्षात्कार प्रश्न था। विजुअल स्टूडियो 2008 और एक पीएनजी फ़ाइल के रूप में सहेजे गए आइकन को देखते हुए, उन्हें छवि को एक एम्बेडेड संसाधन के रूप में आवश्यक था और फ़ॉर्म के शीर्षक पट्टी के भीतर आइकन के रूप में उपयोग किया जाना था।मिला .PNG फ़ाइल। फॉर्म शीर्षक बार

मैं देख रहा हूं कि इस प्रश्न का मॉडल जवाब क्या होगा, दोनों (काम कर रहे हैं!) कोड और किसी भी विजुअल स्टूडियो चालें। (मॉडल उत्तर वह है जो मुझे अगली बार मिलते समय मुझे नौकरी मिलना चाहिए।)

विशेष रूप से मुझे नहीं पता कि एक बार एम्बेडेड संसाधन होने के बाद छवि को कैसे लोड किया जाए और न ही इसे आइकन के रूप में कैसे प्राप्त किया जाए शीर्षक पट्टी

एक हिस्सा समाधान के रूप में, एम्बेडेड बिट अनदेखी, मैं संसाधन ouput निर्देशिका में प्रतिलिपि और निम्नलिखित की कोशिश की: -

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
     this.Icon = new Icon("Resources\\IconImage.png"); 
    } 
} 

यह एक तस्वीर होना चाहिए त्रुटि "तर्क 'तस्वीर' के साथ विफल कि एक आइकन के रूप में इस्तेमाल किया जा सकता है। "

मुझे लगता है कि पीएनजी फ़ाइल वास्तव में एक आईआईसीओ होने की आवश्यकता है, लेकिन मैं नहीं देख पा रहा था कि रूपांतरण कैसे करें। क्या यह अनुमान सही है या क्या कोई अलग मुद्दा है?

उत्तर

57

वीएस फायर करें, नया विंडोज़ एप्लीकेशन शुरू करें। गुण पत्र खोलें, संसाधन के रूप में .png फ़ाइल जोड़ें (इस उदाहरण में: glider.png)।

public Form1() 
     { 
      InitializeComponent(); 
      Bitmap bmp = WindowsFormsApplication10.Properties.Resources.glider; 
      this.Icon = Icon.FromHandle(bmp.GetHicon()); 
     } 
+1

मुझे पूरा नाम स्थान सिस्टम करना था। ड्रॉइंग। आइकन। फ्रॉमहैंडल (लेकिन बहुत अच्छा काम करता है –

1

C# 2.0 Convert Bitmap to Icon में विषय पर एक अच्छा संसाधन।

+0

एक आइकन के लिए एक छवि परिवर्तित करने के लिए अच्छा दिनचर्या। मेरे मामले में छवि में आइकन के लिए सही आयाम थे, इसलिए शायद सरलीकरण संभव है? इसके अलावा मेरे पास एम्बेडेड छवि पर जाने का कोई तरीका नहीं है। –

25

कि प्रश्न के लिए मॉडल जवाब होगा:: hereon से, आप एक आवेदन आइकन के रूप में यह प्रयोग करने के लिए WindowsFormsApplication10.Properties.Resources.glider

कोड के रूप में एक बिटमैप फ़ाइल के रूप में संसाधन का उपयोग कर सकते

System.Console.WriteLine("Are you serious?"); 
System.Console.WriteLine("I think I will try my chances with another employer."); 

बात आप गूगल और स्टैक ओवरफ़्लो तरह संसाधनों का उपयोग कर कुछ ही मिनटों में आपके कंप्यूटर के सामने का समाधान कर सकता है, इस तरह एक कार्य को सुलझाने की तरह है कि अगर आप एक अच्छे डेवलपर या नहीं कर रहे हैं में थोड़ा अंतर्दृष्टि देता है।

आइकन। फ्रॉमहैंडल पीएनजी के साथ समस्याएं पैदा करेगा, क्योंकि पीएनजी में एक से अधिक पारदर्शिता है। इस प्रकार की समस्या को this one जैसी लाइब्रेरी के साथ हल किया जा सकता है।

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

+7

"आइकन। फ्रॉमहैंडल पीएनजी के साथ समस्याएं पैदा करेगा, क्योंकि पीएनजी में एक से अधिक पारदर्शिता है।" - यह ज्ञान प्रदर्शित करना एक साक्षात्कारकर्ता के लिए मूल्यवान अंतर्दृष्टि कि डेवलपर ने वास्तविक दुनिया के अनुप्रयोगों और शिपिंग अनुप्रयोग मुद्दों के साथ निपटाया है। –

+1

अच्छा जवाब। अगर मुझे साक्षात्कार में बेवकूफ प्रश्न पूछे जाएंगे तो मुझे यह जवाब याद आएगा। – Bitterblue

+0

@ आइकन। फ्रॉमहैंडल "समस्याएं पैदा करेगा एक पीएनजी के साथ "- किस तरह की समस्याएं? – user626528

16

यहाँ जाओ:

http://www.getpaint.net/ (नि: शुल्क)

और यहाँ:

Paint.NET ico Plugin (नि: शुल्क)

Paint.NET स्थापित करें। Ico प्लगइन (दूसरा लिंक) को Paint.NET \ FileTypes फ़ोल्डर में रखें। पेंट.नेट शुरू करें। अपना .png खोलें और इसे एक .ico के रूप में सहेजें।

नि: शुल्क और आसान।

+1

दूसरा लिंक मृत है = ( – IbrarMumtaz

+0

सेकन डी लिंक: http://www.evanolds.com/pdn.html – IbrarMumtaz

+0

हालांकि यह मॉडल का जवाब नहीं है, यह निश्चित रूप से लिंक का एक ** बहुत ** उपयोगी सेट है! – ThunderGr

0

यह मेरी प्रयोजनों के लिए काम किया है के बाद से मेरी सभी संसाधनों को PNG फ़ाइलें थे:

[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = CharSet.Auto)] 
extern static bool DestroyIcon(IntPtr handle); 

// From http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.gethicon.aspx 
private Icon bitmapToIcon(Bitmap myBitmap) 
{ 
    // Get an Hicon for myBitmap. 
    IntPtr Hicon = myBitmap.GetHicon(); 

    // Create a new icon from the handle. 
    Icon newIcon = Icon.FromHandle(Hicon); 

    return newIcon; 
} 
+0

आपने घोषित किया, लेकिन कॉल नहीं किया, 'DestroyIcon (Hicon);' इसे किसी बिंदु पर बुलाया जाना चाहिए। आपके द्वारा उद्धृत कोड आइकन की प्रतिलिपि बनाने की सिफारिश करता है, फिर 'DestroyHandle (newIcon.Handle) को कॉल करता है; ' –

+0

अच्छी पकड़। तुम सही हो। धन्यवाद। –

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