Получить большой значок из расширения файла - PullRequest
8 голосов
/ 22 июня 2011

Есть несколько мест, где говорится о том, как получить значок из расширения файла, таких как этот один и этот другой один.После нескольких часов игры с подобными проектами мне удалось создать что-то вроде:

private void addButton_Click(object sender, System.EventArgs e)
    {           
        System.Drawing.Icon temp = IconReader.GetFileIcon(".cs", IconReader.IconSize.Large, false);
        pictureBox1.Image = temp.ToBitmap();
    }

, выполнение этой кнопки заставляет меня:

enter image description here

но я пытаюсь получить большую иконку.Обратите внимание, что значки на окнах намного больше:

enter image description here

Как я могу получить этот значок вместо меньшего.Я провел так много времени, меняя другие программы.Кроме того, я хотел бы заставить его работать с wpf, и большинство примеров с окнами форм.Я был бы признателен, если бы я мог получить пример того, как извлечь значок файла вместо изменения всего проекта.Если это невозможно, это все равно будет очень полезно, и я буду признателен.Просто я не настолько хорош в программировании, и мне потребовалось много времени, чтобы изменить другие примеры.

Ответы [ 3 ]

2 голосов
/ 07 марта 2014

Код, на который вы ссылаетесь, использует только 2 размера:

public const uint SHGFI_LARGEICON = 0x000000000;     // get large icon
public const uint SHGFI_SMALLICON = 0x000000001;     // get small icon

, чтобы получить размер extra_large, вам нужно добавить собственное определение (и добавить другое перечисление для вызова функций):

public const uint SHGFI_EXTRALARGEICON = 0x000000002;     // get extra large icon

или, если вы просто хотите быстро исправить, замените 0x000000000 на 0x000000002 в исходном большом определении.

Вот все размеры значков: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762185%28v=vs.85%29.aspx

2 голосов
/ 22 июня 2011
0 голосов
/ 29 сентября 2016

Вы не можете заставить ShGetFileInfo возвращать значки ExtraLarge и Jumbo.

Вместо

1) Вызвать ShGetFileInfo с флагом SysIconIndex (0x000004000) 2) Получить системный список изображений с нужным размером, используя ShGetImageList 3) Получите HICON, используя ImageList_GetIcon и значение .iIcon из SHFILEINFO.

...