提取分配给文件的正确16x16图标?

时间:2009-07-06 10:01:58

标签: c# .net icons shell-icons

我绑了SHGetFileInfo和ExtractIconEx,两者都返回一个普通的32x32图标和16x16只有16种颜色,看起来很糟糕。如何提取全彩图标?

我的代码

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);

3 个答案:

答案 0 :(得分:4)

我尝试了这个例子link text并且工作.....得到16 * 16 alpha通道。 试试吧。

答案 1 :(得分:3)

您是否尝试过以下操作?

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

答案 2 :(得分:2)

您可以在此处找到有用的操作方法:http://support.microsoft.com/?scid=kb;en-us;319350&x=14&y=9