SHGetImageList - SHIL_JUMBO для значков меньшего размера (32,32)

В моем коде я получаю список изображений с помощью функции SHGETImageList с размером SHIL_JUMBO.

 IImageList iml;
 var hres = SHGetImageList(SHIL_JUMBO, ref iidImageList, out  iml);
 IntPtr hIcon = IntPtr.Zero;
 iml.GetIcon(i, ILD_TRANSPARENT |  ILD_IMAGE, ref hIcon);

 Icon ico =  (Icon)System.Drawing.Icon.FromHandle(hIcon).Clone();
 ShellAPI.DestroyIcon(hIcon);

Все в порядке, но когда нужно получить значки меньшего размера (когда на них нет размером 256x256) функция GetIcon возвращает мне значок размером 256x256, но со значком размером 32x32 в верхнем левом углу. Я хочу изменить размер этого значка до нового размера (256 x 256).

У меня нет информации, как заставить систему изменить размер моего значка до 256 x 256. Каждая функция в iml (например, GetImageInfo, GetImageRect) для этот размер возвращает пустую структуру.

Можно получить информацию о том, что этот значок меньше, и я могу получить значок из другого источника.

17
задан Jack B Nimble 27 January 2012 в 18:49
поделиться