2012-01-05 13 views
8

मैं ico फ़ाइल से 4 छवि उपयोग करना चाहते हैं: C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\VS2008ImageLibrary\1033\VS2008ImageLibrary\VS2008ImageLibrary\Objects\ico_format\WinVista\Hard_Drive.icoकैसे आप सी # में सूचकांक का उपयोग कर एक मल्टी-चिह्न (.ico) फाइल से माउस का उपयोग कर सकते

अगर मैं विंडोज फ़ोटो दर्शक का उपयोग कर यह आइकन दिखाई , मुझे 13 अलग-अलग आइकन दिखाता है।

मैंने इस आईको को संसाधन फ़ाइल में छोड़ दिया है, मैं इंडेक्स का उपयोग करके आवश्यक आइकन को कैसे पुनः प्राप्त कर सकता हूं।

उत्तर

6

WPF में, आप कुछ इस तरह कर सकते हैं:

Stream iconStream = new FileStream (@"C:\yourfilename.ico", FileMode.Open); 
IconBitmapDecoder decoder = new IconBitmapDecoder ( 
     iconStream, 
     BitmapCreateOptions.PreservePixelFormat, 
     BitmapCacheOption.None); 

// loop through images inside the file 
foreach (var item in decoder.Frames) 
{ 
    //Do whatever you want to do with the single images inside the file 
    this.panel.Children.Add (new Image() { Source = item }); 
} 

// or just get exactly the 4th image: 
var frame = decoder.Frames[3]; 

// save file as PNG 
BitmapEncoder encoder = new PngBitmapEncoder(); 
encoder.Frames.Add(frame); 
using (Stream saveStream = new FileStream (@"C:\target.png", FileMode.Create)) 
{ 
    encoder.Save(saveStream); 
} 
5

आपको शीर्ष पर .ico फ़ाइल हथियाने की जानकारी के माध्यम से मैन्युअल रूप से पार्स करने की आवश्यकता होगी (.ico फ़ाइल प्रकार के लेआउट के लिए here देखें)।

vbAccelerator पर एक खुला स्रोत project है (चिंता न करें यह वास्तव में सी # कोड है, वीबी नहीं) जो संसाधनों से आइकन निकालने के लिए Win32 API का उपयोग करता है (exe, dll और यहां तक ​​कि ico, जो आप करना चाहते हैं)। आप या तो उस कोड का उपयोग कर सकते हैं या इसके बारे में एक अच्छा विचार के लिए जा सकते हैं कि यह कैसे किया जाता है। स्रोत कोड को here ब्राउज़ किया जा सकता है।

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