4

我绑定了 SHGetFileInfo 和 ExtractIconEx,它们都返回一个普通的 32x32 图标和只有 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);
4

3 回答 3

4

我尝试了这个示例链接文本并且工作......得到了 16*16 的 alpha 通道。试试看。

于 2009-07-06T10:29:10.813 回答
3

您是否尝试过以下操作?

Icon LargeIcon = Icon.ExtractAssociatedIcon(fileName);
Icon SmallIcon = new Icon(LargeIcon, 16, 16);
于 2009-07-06T10:47:03.787 回答
2

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

于 2010-05-26T13:46:11.277 回答