2009-07-06 15 views
3

J'ai lié SHGetFileInfo et ExtractIconEx, les deux retournent une icône normale 32x32 et 16x16 avec seulement 16 couleurs, et cela a l'air horrible. Comment puis-je extraire une icône en couleur?Extraire une icône correcte 16x16 affectée à un fichier?

Mon code

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

Etes-vous sûr que vous déposiez en essayant d'extraire petite icône a icône 16x16 en couleur? – arbiter

+0

Au moins l'explorateur Windows le montre. http://img196.imageshack.us/i/iconsdys.png/ – alx

+0

C'est étrange, ça doit marcher, au moins ça marche dans mon cas. Vous avez absolument besoin d'une icône, ou l'image est également acceptable? – arbiter

Répondre

4

J'ai essayé cet exemple link text et travaille ..... obtenu 16 * 16 avec canal alpha. Essayez-le.

+0

Confirmer cela fonctionne. Il semble que vous devez appeler ToBitmap() sinon vous n'aurez que 16 couleurs! merci – MickyD

+1

Wow, c'est le seul que je peux travailler. comme sur les 20 que j'ai trouvé sur google. Celui-ci gouverne! – Omzig

2

Avez-vous essayé ce qui suit?

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

Une icône extraite a le seul bitmap, donc il ne fait que déformer l'image. – alx

+0

ne fonctionne pas, encore 16 couleurs – MickyD