Как использовать файлы .ico в приложении Winforms? - PullRequest
2 голосов
/ 09 марта 2010

Я занимаюсь разработкой приложения WinForms c # 3.0. Наш дизайнер создал довольно много .ico-файлов, содержащих все необходимое искусство. Выбор .ico был сделан потому, что довольно часто одно и то же изображение требуется в нескольких местах в разных измерениях.

Теперь кажется, что .ico файлы действительно раздражают для использования в visual studio. Единственный способ использовать эти изображения, кажется, через список изображений (которые не поддерживаются всеми элементами управления). По сравнению с другими ресурсами, вы не можете написать это:

foo.Image = global::RFQHUB.RFQHUBClient.Properties.Resources.foo; //    Cannot implicitly convert type 'System.Drawing.Icon' to 'System.Drawing.Image'  

Вот варианты, которые я рассматриваю:

  • создавать списки изображений всех возможных размеров, ссылаясь на все мои значки в главном окне. Свяжите эти списки изображений из других окон и найдите способ экспортировать объекты изображений из списка изображений, когда я не могу использовать его напрямую; поскольку ImageList содержит метод Draw (), это, вероятно, должно быть возможным.
  • конвертируйте все x.ico, которые у меня есть в несколько x16.gif ... x48.gif, и используйте их через ресурсы.

Мне было бы интересно узнать, успешно ли некоторые люди используют ресурсы .ico в приложении Winform. Итак, как вы все настроили?

Ответы [ 2 ]

3 голосов
/ 09 марта 2010

ICO не совсем устаревший формат, но он близок. Это все еще полезно для иконки вашего приложения, но почти для всего остального лучше использовать ImageList для каждого нужного вам размера. И намного быстрее заполнить ImageList из растрового изображения, которое содержит несколько изображений, размещенных в сетке.

Вы также хотите использовать прозрачность альфа-канала в своих растровых изображениях, чтобы получить наилучший результат, поэтому лучше всего сохранить их в виде файлов .PNG в своих ресурсах, поскольку PNG поддерживает альфа-канал. Файлы ICO и GIF поддерживают только один бит для прозрачности - каждый пиксель либо полностью непрозрачен, либо полностью прозрачен. 8-битный альфа-канал для прозрачности выглядит намного лучше.

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

3 голосов
/ 09 марта 2010

Конвертируйте изображения в PNG. Точка. Кто бы ни решил начать использовать .ico-файлы, следует поговорить наедине - аргумент не имеет оснований.

...