Tutoriel simple d'utilisation de clGdiplus Par Thierry GASPERMENT Date de publi

Tutoriel simple d'utilisation de clGdiplus Par Thierry GASPERMENT Date de publication : 24 avril 2008 Dernière mise à jour : 8 avril 2018 Ce document a pour objectif d'apprendre les bases de l'utilisation du module de classe graphique clGdiplus. Le module clGdiplus apporte des fonctions pour dessiner sur un contrôle image standard et permet de rendre l'image interactive par l'ajout de régions sensibles aux actions de la souris. Microsoft Gdi+ est un pré requis. Cet article est rédigé pour Access, mais il est possible également d'utiliser Excel, Word ou Powerpoint. Tutoriel simple d'utilisation de clGdiplus par Thierry GASPERMENT I - Introduction..............................................................................................................................................................3 II - Création du formulaire et du contrôle image.........................................................................................................3 III - Installation du module clGdiplus...........................................................................................................................4 IV - Déclaration de la classe et initialisation...............................................................................................................4 V - Chargement d'une image de fond.........................................................................................................................5 VI - Dessin du texte.....................................................................................................................................................7 VII - Dessin du rectangle.............................................................................................................................................8 VIII - Affichage d'une petite image dans le rectangle................................................................................................. 9 IX - Définition d'une région........................................................................................................................................11 X - Détecter le clic sur une région............................................................................................................................12 XI - Détecter le survol d'une région.......................................................................................................................... 12 XII - Corriger les clignotements.................................................................................................................................13 XIII - Le code complet............................................................................................................................................... 13 XIV - Conclusion........................................................................................................................................................15 XV - Téléchargements...............................................................................................................................................15 - 2 - Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2013 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC. http://arkham46.developpez.com/articles/office/clgdiplus/tuto/tutosimple/ Tutoriel simple d'utilisation de clGdiplus par Thierry GASPERMENT I - Introduction Nous allons au cours de ce tutoriel : • charger une image de fond ; • dessiner du texte ; • dessiner un rectangle ; • dessiner une image dans ce rectangle par-dessus l'image de fond ; • détecter le survol du rectangle ; • détecter le clic sur le rectangle. L'exemple est créé avec Access mais il est possible d'adapter facilement pour les autres applications Office. Voici le résultat que l'on obtiendra à la fin du tutoriel Consultez la documentation des fonctions et des propriétés de clGdiplus Lien vers la bibliothèque gdiplus.dll en téléchargement sur Microsoft.com pour Windows sans Gdi+ II - Création du formulaire et du contrôle image Créez un formulaire et placez-y un contrôle image de n'importe quelle taille. Il n'est pas utile d'intégrer une image dans le contrôle car on va dessiner dessus. Si nécessaire, choisissez une image quelconque pour créer le contrôle puis dans les propriétés du contrôle dans l'onglet Format, effacez la propriété Image. - 3 - Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2013 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC. http://arkham46.developpez.com/articles/office/clgdiplus/tuto/tutosimple/ Tutoriel simple d'utilisation de clGdiplus par Thierry GASPERMENT Définissez le mode d'affichage à Zoom. L'image sera redimensionnée en conservant ses proportions. Vérifiez le nom du contrôle dans l'onglet Autres, changez le si-besoin en Image0 (c'est le nom qu'on va utiliser dans ce tutoriel) III - Installation du module clGdiplus Téléchargez le module de classe clGdiplus. Puis importez le fichier clGdiplus.cls contenu dans l'archive téléchargée. Vous pouvez soit faire glisser le fichier vers l'explorateur de projet VBA, soit importer le fichier à partir du menu : Fichier => Importer un fichier… Pour accéder à l'éditeur VBA, vous pouvez utiliser le raccourci clavier ALT-F11. Ce module de classe VBA utilise la bibliothèque gdiplus.dll de Microsoft. Si vous utilisez une version de Windows antérieure à XP, téléchargez la bibliothèque gdiplus.dll et placez la dans le même répertoire que le fichier Access. IV - Déclaration de la classe et initialisation On va écrire notre code dans le module du formulaire. Cliquez sur Affichage => Code pour ouvrir ce module. Vérifiez que vous avez l'instruction Option Explicit en haut du module. Sinon rajoutez le pour imposer la déclaration de toutes les variables, cela évite les étourderies. En-tête de module Option Compare Database Option Explicit Pour pouvoir utiliser le module il est nécessaire de déclarer un objet dont le type est le nom sous lequel on a sauvegardé notre module de classe. Déclaration de l'objet de type clGdiplus Private oGdi As clGdiPlus Première chose à faire : il faut créer une instance de l'objet classe. (Pour l'instant oGdi a pour valeur Nothing). On écrit ce code dans l'événement Sur Ouverture du formulaire. Dans les propriétés du formulaire, définissez [Procédure événementielle] dans l'événement Sur Ouverture. Cliquez sur les trois petits points […] pour générer l'événement dans le code. Initialisation de l'objet Private Sub Form_Open(Cancel As Integer) ' Initialisation de la classe de dessin Set oGdi = New clGdiPlus End Sub Deuxième chose à faire : pensez à libérer la classe dès qu'elle n'est plus utile. La libération de la classe est importante car elle supprime tous les objets graphiques de la mémoire. - 4 - Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2013 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC. http://arkham46.developpez.com/articles/office/clgdiplus/tuto/tutosimple/ Tutoriel simple d'utilisation de clGdiplus par Thierry GASPERMENT Dans les propriétés du formulaire, définissez [Procédure événementielle] dans l'événement Sur Fermeture. Cliquez sur les trois petits points […] pour générer l'événement dans le code. À l'intérieur de la procédure Form_Close on va libérer la classe : il suffit de lui donner la valeur Nothing si elle n'a pas déjà cette valeur. Libération de la classe Private Sub Form_Close() ' Libération de la classe à la fermeture du formulaire If Not oGdi is Nothing Then Set oGdi = Nothing End Sub En fait l'objet est normalement libéré automatiquement lorsqu'il est détruit, donc lorsque le formulaire est fermé. Mais il vaut mieux prendre l'habitude de libérer explicitement les objets pour être sûr, il arrive parfois que des objets ne se libèrent pas tout seul. V - Chargement d'une image de fond Si vous affichez le formulaire, vous ne voyez rien. C'est normal car on n'a encore rien fait… On va maintenant charger une image dans le contrôle. Placez une image dans le même répertoire que votre base de données. Mon image s'appelle DSCN1099.JPG, remplacez ce nom de fichier par le vôtre dans le code ci-dessous. La fonction utilisée pour charger le fichier est LoadFile. Une fois le fichier ouvert, il faut ensuite mettre à jour le contrôle pour voir le résultat à l'écran. La fonction LoadFile ouvre le fichier en mémoire mais n'affiche rien. L'affichage à l'écran s'effectue en mettant à jour la propriété PictureData de l'image grâce à la fonction Repaint. Chargement d'une image de fond Private Sub Form_Open(Cancel As Integer) ' Initialisation de la classe de dessin Set oGdi = New clGdiPlus ' Chargement d'une image de fond oGdi.LoadFile CurrentProject.Path & "\DSCN1099.JPG" ' Affichage de l'image dans le contrôle oGdi.Repaint Me.Image0 End Sub On obtient alors l'image dans le formulaire. Il peut parfois y avoir un problème d'affichage au redimensionnement de l'image, généralement lors de l'affichage d'une image plus grande que le contrôle qui la contient. - 5 - Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2013 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC. http://arkham46.developpez.com/articles/office/clgdiplus/tuto/tutosimple/ Tutoriel simple d'utilisation de clGdiplus par Thierry GASPERMENT Pour résoudre ce problème, passez le paramètre pUseEMF de la fonction Repaint à Vrai. Ce problème d'affichage ne se produit pas pour un type d'image EMF. Affichage avec format EMF ' Affichage de l'image dans le contrôle oGdi.Repaint Me.Image0, , , True - 6 - Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée uploads/S4/ classe-gdi-basic-vba.pdf

  • 22
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Dec 02, 2021
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 0.4289MB