2010-03-09 12 views
2

Je développe une application WinForms C# 3.0. Notre concepteur a créé beaucoup de fichiers .ico contenant tout l'art nécessaire. Le choix de .ico a été fait parce que souvent, la même image est nécessaire dans plusieurs endroits dans différentes dimensions.Comment utiliser les fichiers .ico dans une application Winforms?

Maintenant, il semble fichiers .ico sont vraiment gênant d'utiliser dans Visual Studio. La seule façon d'utiliser ces images semble être à travers la liste d'images (qui ne sont pas supportés par tous les contrôles). Par rapport à d'autres ressources, vous ne pouvez pas écrire ceci:

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

Voici les options que je songe à me:

  • créer ImageLists de toutes les tailles possibles référençant toutes mes icônes dans ma fenêtre principale. Reliez ces ImageLists à partir d'autres fenêtres et trouvez un moyen d'exporter des objets Image depuis ImageList lorsque je ne peux pas l'utiliser directement; Comme ImageList contient une méthode Draw(), cela devrait probablement être possible.
  • convertir tous les x.ico que j'ai dans plusieurs x16.gif ... x48.gif, et les utiliser à travers les ressources.

Je serais intéressé de savoir si certaines personnes utilisent avec succès les ressources .ico dans une application Winform. Dans ce cas, comment avez-vous mis en place des choses?

Répondre

3

ICO n'est pas tout à fait un format obsolète, mais il est proche. C'est toujours utile pour votre icône d'application, mais pour presque tout le reste, il est préférable d'utiliser une ImageList pour chaque taille dont vous avez besoin. Et il est beaucoup plus rapide de remplir une ImageList à partir d'un bitmap contenant plusieurs images disposées dans une grille. Vous souhaitez également utiliser une transparence de canal Alpha dans vos bitmaps pour obtenir le meilleur résultat, donc les stocker sous forme de fichiers .PNG dans vos ressources est la meilleure solution, car le format PNG prend en charge un canal alpha. Les fichiers ICO et GIF ne prennent en charge qu'un seul bit pour la transparence: chaque pixel est entièrement opaque ou entièrement transparent. Un canal alpha 8 bits pour la transparence semble beaucoup plus agréable.

Si vous pouvez renvoyer votre artiste sur la planche à dessin, vous devez le faire et lui faire faire des images complètes avec alpha. Si vous ne pouvez pas, alors je vous suggère d'écrire un petit programme pour convertir tous vos fichiers d'icônes en bitmaps appropriés pour le chargement dans ImageLists.

+0

IcoFX (http://icofx.ro/) est un freeware qui prend en charge la conversion par lots de .ico à .png. L'ensemble du processus de conversion m'a pris environ 10 secondes pour des centaines de fichiers – Brann

2

Convertissez les images en PNG. Point. Quiconque a décidé d'utiliser les fichiers .ico pour commencer devrait être contacté en privé - l'argument ne tient pas la route.

+1

"Période" est plus commun que "Point". –

Questions connexes