Bonjour,

Je vous propose un nouvel élément à utiliser : Icône, un programme de génération













(Boîte de dialogue Enregistrer sous)















Icône, un programme de génération



Ce programme de construction très classique est réalisé

en « cpp » avec l’atelier logiciel Microsoft Visual Studio Community 2019

utilisant l’architecture MFC document/vue. Les parties principales sont

extraites d’un autre programme déjà publié : « Imager ».

Parties qui pourraient facilement compléter ce dernier pour enrichir ses fonctions.

Il permet de générer des fichiers d’Icônes à partir d’images (photos ou

génération de palette graphique) avec la possibilité de sélectionner une partie

de l’original et de rendre des parties transparentes.



La classe d’affichage CImagerView

(fichiers ViewImage.h et ViewImage.cpp) comporte par rapport à l’original les fonctions

supplémentaires pour ce nouvel usage :


  • Sélectionner : Ouvre une classe CRectTracker permettant de définir

    une partie de l’image affichée.

    Cette partie pouvant être copiée dans le presse papier ou transportée par un Drag/Drop

    sur une autre application ou utilisée par les fonctions internes suivantes.




  • Transparence : Ouvre la classe de dialogue CEditColorDlg

    (fichiers EditColorDlg.h et EditColorDlg.cpp) permet de déterminer une couleur de transparence

    avec masque de définition pour éliminer des parties de l’image non utiles.

    Ces parties étant calculées de proche en proche à partir des coins de la sélection.

    Cette classe de dialogue possède une zone d’affichage illustrant les tentatives de transparence.




  • Générer Icône : Ouvre la classe de dialogue CIconCreateDlg

    (fichiers IconCreateDlg.h et IconCreateDlg.cpp) permet de créer le fichier d’Icône.

    Différentes commandes disposées sur cette boite de dialogue permettent entre autre

    de choisir les différentes dimensions de motifs et de rendre transparentes des parties

    de l’image soit automatiquement à partir de la couleur des coins de l’mage soit

    à partir de la couleur et du masque déterminés par l’utilitaire précédent.






Lorsque la couleur ne permet pas d’éliminer des parties gênantes de l’Icône

il est toujours possible de transporter la partie sélectée (au niveau de ces trois fonctions)

dans un programme de traitement d'images comme « Paint » pour compléter ce détourage

et ensuite revenir générer l’Icône avec cette image retravaillée.



Ces fonctions sont appelées par le menu Edition lorsqu’une image est affichée.

La dernière fonction génère une Icône (composée éventuellement de plusieurs grandeurs de motifs)

affichée par la classe CIconCurView (fichiers ViewIconCur.h et ViewIconCur.cpp).

Cette classe identique à la version d’origine (application Imager)

permet de sauvegarder les Icônes générées.



Fonctions communes



Dans ces différentes fonctions pour gérer images et icônes le programme

« Icon » fait appel aux fonctions contenues dans les fichiers IconCur.h, IconCur.cpp,

BitmapUtil.h et BitmapUtil.cpp, identiques à l’application d’origine. De plus notre programme

utilise les classes classiques d’une application MFC pour le reste de ses autres traitements.



La détermination de la transparence utilise une particularité de

Windows GDI+ : Un pixel de couleur est défini par une valeur 32 bits

décomposable en 4 champs de 8 bits (alpha, rouge, vert, bleu).

La valeur alpha indique la transparence du pixel, la mesure dans laquelle sa couleur est fusionnée

avec celle d’arrière-plan. Les valeurs alpha sont comprises entre 0 et 255, où 0 représente

une couleur entièrement transparente laissant apparaître intégralement la couleur de fond,

et 255 représente une couleur entièrement opaque, montrant sans altération la couleur

définie par ces trois composantes RVB.

Dans le cas de notre programme la transparence est gérée en tout ou rien.



Une variété d’icônes utilise ce standard 32 bits par pixel pour représenter l’image

avec cette méthode de transparence mais cette version n’est pas accepté par tous les programmes.

La méthode classique consiste à utiliser une bitmap supplémentaire de masque (AND) de 1 bit par pixel

de mêmes dimensions que l’image pour indiquer les pixels transparents.

Pour cela la procédure IconCopy() de IconCur.cpp permet la copie d’icônes en assurant la conversion

de 32 à 24 bits par pixel où la transparence est dans la bitmap supplémentaire de masque

(format plus communément accepté).



Exemple d'utilisation du programme



L’enchainement des trois copies d’écran montre ce que l’on peut obtenir

avec par exemple cette reproduction de broderie machine permettant de sortir ce fichier d’icône

en choisissant seulement le cadrage, puis la couleur (avec la pipette intégrée) et le masque.











Qu'en pensez-vous ?