2009-07-06 35 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);