Как я могу извлечь определенное изображение из файла значков в .NET?

#.net #image #icons #embedded-resource

#.net #изображение #gdi #Значки

Вопрос:

Файлы значков (*.ico) могут содержать несколько изображений разных размеров и разной глубины цвета.

Как я могу получить System.Drawing.Image объект из .ico файла?

Есть Image.FromFile(...) один из вариантов, но для файлов значков с несколькими изображениями невозможно указать, какой размер изображения и глубину цвета возвращать.

В идеале решение должно использовать только управляемый код, но я рад услышать и о вызовах взаимодействия с функциями Win32.

Комментарии:

1. Почему понижающий голос? Я что-то упускаю?

Ответ №1:

Простой ответ на все ваши вопросы: IconLib

Комментарии:

1. Спасибо за эту ссылку. Выглядит как отличная статья. Мне это больше не нужно, но в следующий раз, когда я буду работать со значками, я обязательно проверю эту библиотеку. Надеюсь, ваш ответ поможет и другим. На данный момент это лучший ответ, поэтому я принял его, хотя, если появится более простой ответ, который не требует внешних библиотек, я бы предпочел это.

Ответ №2:

Система.Рисование.Значок может загружать указанный размер из файла. Однако я не знаю о глубине. http://msdn.microsoft.com/en-us/library/ms142130.aspx

Комментарии:

1. Кажется, за исключением размеров выше 48×48.

Ответ №3:

Вам нужно будет использовать

 Dim icon As System.Drawing.Icon
icon = icon.FromHandle(hIcon)
  

В структуре hIcon вы можете указать глубину цвета

Эти ссылки направят вас в правильном направлении: