2009-07-06 4 views
3

SHGetFileInfo와 ExtractIconEx를 묶어 두 가지 모두 16x16 크기의 일반 아이콘과 16x16을 반환하며 끔찍하게 보입니다. 풀 컬러 아이콘은 어떻게 추출합니까?파일에 할당 된 올바른 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

+0

적어도 Windows 탐색기에 표시됩니다. http://img196.imageshack.us/i/iconsdys.png/ – alx

+0

이상하게도 작동해야합니다. 적어도 제 경우에는 작동합니다. 당신은 절대적으로 아이콘이 필요하거나 이미지도 받아 들일 수 있습니까? – arbiter

답변

4

내 코드는 내가이 예 link text을 시도하고 작동 ..... 알파 채널과 16 * 16를 얻었다. 사용해보기.

+0

확인하십시오. ToBitmap()을 호출해야합니다. 그렇지 않으면 16 색만 나타납니다! 감사합니다 – MickyD

+1

와우, 이것이 내가 일할 수있는 유일한 것입니다. 나가 Google에 찾아낸 20 같이에서. 이것은 하나의 규칙! – Omzig

2

다음을 시도하셨습니까?

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

추출 된 아이콘에는 비트 맵 만 있으므로 이미지가 왜곡됩니다. – alx

+0

doesnt work, 여전히 16 색 – MickyD

관련 문제