Как я могу извлечь изображение определенного размера из значка? - PullRequest
8 голосов
/ 28 сентября 2010

Как извлечь изображение определенного размера или все изображения из значка с несколькими изображениями?

1 Ответ

11 голосов
/ 29 сентября 2010

Вы не говорите, какова цель этого, и есть несколько способов получить значки, и один метод может быть лучше, чем другой, в зависимости от цели.

Однако, для извлечения любого количества «больших» (32x32) и / или «маленьких» (16x16) значков * из произвольного файла , используйте функцию ExtractIconEx , Это позволяет извлечь один или несколько значков любого из этих двух стандартных размеров из файла значков (.ico), EXE или DLL. Файл значка может содержать несколько изображений, и эта функция позволит вам получить все из них.

Функция запишет в массив дескрипторов, каждый из которых вы можете назначить свойству Handle экземпляра TIcon. Затем вы можете использовать TIcon методы , как обычно, если бы вы загружали TIcon любым другим способом. Обратите внимание, что новшеством в Delphi XE является возможность его простого копирования в растровое изображение с помощью метода Assign . В этой статье также показано, как получить доступ ко всем стандартным (встроенным / стандартным) значкам Windows , если это то, что вам нужно.

(Примечание: я думаю, класс TIcon позволяет загружать из файла его метод LoadFromFile - этого, похоже, не хватает в документации, но я почти уверен, что он существует . Из памяти загружается только один значок.)

(*) На самом деле, «большие» и «маленькие» банки отличаться от 32x32 и 16x16: используйте GetSystemMetrics функция с SM_CXICON, SM_CYICON, SM_CXSMICON и SM_CYSMICON флаги, чтобы узнать Размеры каждого типа.

...