Как мне использовать файлы .ico в приложении Winforms?
Вопрос
Я разрабатываю приложение 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, следует поговорить приватно — этот аргумент не имеет под собой никаких оснований.