Esempio n. 1
0
        static IntPtr GetIcon(int iImage, SHIL_IconSizes size)
        {
            IImageList spiml = null;
            var        guil  = new Guid(IID_IImageList2);//or IID_IImageList

            NativeMethods.SHGetImageList((int)size, ref guil, ref spiml);
            var hIcon = IntPtr.Zero;

            spiml.GetIcon(iImage, NativeMethods.ILD_TRANSPARENT | NativeMethods.ILD_IMAGE, ref hIcon);

            return(hIcon);
        }
Esempio n. 2
0
        public static Image GetPngFromExtension(string ext, SHIL_IconSizes size)
        {
            ext = ext.Replace("*", "").Replace(".", "");
            var   hIcon  = GetIcon(GetIconIndex("*." + ext), size);
            Image result = null;

            // from native to managed
            using (var ico = (Icon)Icon.FromHandle(hIcon).Clone())
            {
                // save to stream to convert to png, then back.
                using (var stream = new MemoryStream())
                {
                    ico.ToBitmap().Save(stream, ImageFormat.Png);
                    result = Image.FromStream(stream);
                }
            }
            NativeMethods.DestroyIcon(hIcon); // don't forget to cleanup
            return(result);
        }