Как мне использовать файлы .ico в приложении Winforms?

StackOverflow https://stackoverflow.com/questions/2408108

Вопрос

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

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

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.Итак, как вы все настроили?

Это было полезно?

Решение

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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top