2009-07-06 34 views
3

我绑SHGetFileInfo和ExtractIconEx,都返回一个正常的32x32图标和16x16只有16种颜色,它看起来很糟糕。如何提取全彩图标?提取分配给文件的正确的16x16图标?

我的代码

SHFILEINFO shinfo = new SHFILEINFO(); 
IntPtr hImgSmall = SHGetFileInfo(fileName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), SHGFI_ICON | SHGFI_SMALLICON); 
Icon icon = (Icon)System.Drawing.Icon.FromHandle(shinfo.hIcon).Clone(); 
DestroyIcon(shinfo.hIcon); 
+0

你确定你的文件试图提取小图标具有全彩色16×16的图标? – arbiter 2009-07-06 10:49:51

+0

至少Windows资源管理器显示它。 http://img196.imageshack.us/i/iconsdys.png/ – alx 2009-07-06 12:20:33

+0

这很奇怪,它必须起作用,至少它适用于我的情况。你绝对需要Icon,或Image也可以接受? – arbiter 2009-07-06 12:58:18

回答

4

我试过了这个例子link text和作品..... alpha通道得到了16 * 16。 试试吧。

2

您是否尝试过以下方法?

Icon LargeIcon = Icon.ExtractAssociatedIcon(fileName); 
Icon SmallIcon = new Icon(LargeIcon, 16, 16);