2013-07-27 437 views
0

Я написал программу, которая сохраняет значок исполняемых файлов. когда я получаю значок исполняемых файлов методом ExtractAssociatedIcon и сохраняю его, качество значка вывода будет низкого качества. Что я могу сделать?C# - Сохранить значок исполняемых файлов

var ico = Icon.ExtractAssociatedIcon(@"c:/test.exe"); 
FileStream stream = new System.IO.FileStream(string.Format("{0}{1}", Path.GetTempPath(), "icon" + counter + ".ico"), System.IO.FileMode.Create); 
ico.Save(stream); 
stream.Flush(); 
stream.Close(); 
+0

Это * очень * общий вопрос, пожалуйста, найдите ответы, прежде чем обращаться за помощью. Введите «extractassociatedicon» в поле поиска в правом верхнем углу этой страницы. –

+1

http://www.brad-smith.info/blog/archives/164 –

+0

Я искал extractassociatedicon, но не могу найти истинный ответ. – ArMaN

ответ

-1

Вы должны прочитать эту WikipediaMSDN

16х16 или 32х32 стандартный размер ICO. Вы не можете ожидать 32x32image очень HD

Шелл Иконка Значение Размер позволяет использовать большие значки вместо 32 × 32 икон и значение Размер Shell Маленькая иконка позволяет использовать пользовательские размеры вместо 16 × 16 иконки. [3] Таким образом, даже до Windows XP файл одиночного значка может хранить изображения любого размера от 1 × 1 пиксель до 256 × 256 пикселей (включая неквадратные размеры) с 16, 256, 65535 или 16,7 миллионов цветов ; но оболочка не могла отображать значки большого размера.

+0

Есть ли другой способ извлечь HQ Icon exe-файлов? – ArMaN

+0

Когда нет HD-изображения, как вы можете извлечь его братом. Изображение ICO имеет 16x16, а изображение HD - 1280 × 720. Так и математика для разницы в размерах – Aki003

2

Непросто. Вы должны использовать SystemImageList. Он не поддерживается платформой .NET, поэтому вы должны использовать небезопасные методы для доступа к системе. Icon.ExtractAssociatedIcon возвращает только разрешение 32x32.

Если вы действительно в том, что делать, это хорошее начало: http://www.vbaccelerator.com/home/NET/Code/Libraries/Shell_Projects/SysImageList/article.asp

UPDATE: если вы хотите только для EXE-файлов и вам не нужна поддержка для Windows XP, вы можете также использовать Windows API Codepack http://archive.msdn.microsoft.com/WindowsAPICodePack и получите эскиз элемента в необходимом размере.

Смежные вопросы