7
votes

Comment créer un fichier d'icône contenant plusieurs tailles / images en C #

Comment créer un fichier d'icône contenant plusieurs tailles?

Je sais que je crée une icône à partir d'un bitmap à l'aide de icon.fromhandle () mais comment puis-je ajouter une autre image / taille à cette icône?

EDIT: J'ai besoin de le faire dans ma demande, je ne peux donc pas exécuter une application externe pour faire la combinaison.


4 commentaires

Comme je ne pense pas que cela réponde à votre question, je posterai cela comme un commentaire. J'utilise un programme appelé IcoFX pour créer des icônes, et il est très pratique de créer plusieurs tailles d'icône à la fois, en réalisant l'icône d'origine 256x256 sur les différentes autres tailles (c'est-à-dire 64x64, 32x32 ...), vous pouvez ou non Trouvez-le et informations connexes utiles. Site Web: icofx.ro


Drôle tant de gens vous donnent immédiatement un outil externe, même si vous avez précisé que vous ne pouvez pas les utiliser. Je me demande s'ils lisent la question complètement!


@IAméros: la spécification a été ajoutée après ces commentaires, les utilisateurs qui ont commenté ont probablement lu la question. J'ai édité la question pour aider à clarifier cela. :)


Pour être juste, le titre original a fait "en C #"


5 Réponses :


1
votes

Vous ne pouvez pas créer une icône à l'aide du système System.Drawing API. Ils ont été construits pour accéder à des icônes spécifiques à partir d'un fichier d'icône, mais pas pour écrire retour plusieurs icônes à un fichier .ico.

Si vous voulez simplement faire des icônes, vous pouvez utiliser GIMP ou un autre programme de traitement d'image pour créer vos fichiers .ico. Sinon, si vous avez vraiment besoin de créer des fichiers .ico de manière programmative, vous pouvez utiliser png2ico (invoquant en utilisant system.diagnostics.process.start ) ou quelque chose de similaire.


3 commentaires

Bien sûr, vous pouvez faire des fichiers d'icônes ... à partir de n'importe quelle image: Go4Expert.com/forums /ShowThread.php?t=19250


@Nickaldwin: Vous pouvez enregistrer des icônes simples en couches (comme indique votre lien), mais vous ne pouvez pas enregistrer plusieurs icônes de couche . J'ai édité de clarifier.


Je voulais juste éclaircir une éventuelle idée fausse, merci d'éditer;)



0
votes

Utilisez iCofx: http://icofx.ro/

Il peut créer des icônes de Windows et stocker plusieurs tailles et couleurs dans 1 fichier ICO


1 commentaires

OP a demandé une méthode programmatique



3
votes

Quick Cya: Je viens de faire une recherche Google et n'a pas testé la méthode ci-dessous. Ymmv.

J'ai trouvé Cet article , qui mentionne une classe qui fait cela ( Bien que dans vb.net, mais assez facile à traduire) et raconte comment il l'a utilisé. Alors que la page que le fil de thread ne semble plus avoir le code source mentionné, j'ai trouvé une version de celui-ci ici.


0 commentaires

2
votes

Ceci peut être fait avec iconLib . Vous pouvez obtenir la source de l'article de codeProject ou obtenir un DLL compilée de mon miroir GitHub . xxx

CreateFrom peut prendre soit le chemin d'accès à un png 256x256 png ou à un systemap.drawing.bitmap objet.


1 commentaires

Merveilleux. Merci.



9
votes

Je cherchais un moyen de combiner les fichiers .png, rien de fantaisie, dans une icône. J'ai créé le code ci-dessous après ne pas pouvoir trouver quelque chose de simple et que cette question étant le résultat de la recherche en haut.


Le code suivant peut créer une icône avec plusieurs tailles si, pour chacune des images, le image.rawformat est imageFormat.png < / a>, le Image .PixelFormat est pixelformat.format32bppargb et les dimensions sont inférieures ou égales à 256x256 : xxx

Utilisation: xxx


2 commentaires

Merci. Cela a été vraiment utile.


Presque. ICOS ne fonctionnera pas dans XP (que je dois soutenir).