Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUM OFFICE FAQs OFFICE TUTORIELS OFFICE LIVRES OFFICE SOURCES VBA ACCESS

ACCESS + EXCEL : Classe de gestions des images avec Gdi+

Date de publication : 24/04/08 , Date de mise à jour : 24/04/08

Par Thierry GASPERMENT (arkham46.developpez.com/)
 

Module de classe VBA pour faciliter l'utilisation de la librairie graphique gdiplus.dll (GDI+)

I. Introduction
II. Remarques préalables
II-A. Remarques
II-B. Pré-requis
II-C. Compatibilité avec Excel
III. Les fonctions de création et de sauvegarde
III-A. OpenFile
III-B. CloseFile
III-C. CreateBitmap
III-D. SaveFile
III-E. SaveTransformFile
III-F. SaveJpegLossLess
IV. Autres fonctions de lecture / écriture de l'image
IV-A. GetPixels
IV-B. SetPixels
IV-C. SetBitmap
IV-D. GetBitmap
IV-E. SetImageArray
IV-F. GetImageArray
IV-G. LoadBitmapFromControl
V. Les fonctions de modification de l'image
V-A. ReplaceColor
V-B. FillColor
V-C. ApplyColorMatrix
V-D. Resize
V-E. Crop
V-F. Rotate
V-G. RotateFlip
VI. Les fonctions de dessin
VI-A. DrawPixel
VI-B. DrawLine
VI-C. DrawRectangle
VI-D. DrawEllipse
VI-E. DrawPolygon
VI-F. DrawText
VI-G. DrawImage
VI-H. DrawBitmap
VII. Les fonctions pour gérer la liste d'images
VII-A. ImageListAdd
VII-B. ImageListGetBitmap
VII-C. ImageListAddBitmap
VII-D. ImageListAddRect
VII-E. ImageListAddFromControl
VII-F. ImageListNew
VII-G. ImageListExists
VII-H. ImageListDel
VII-I. ImageListClone
VII-J. ImageListWidth
VII-K. ImageListHeight
VII-L. Fonctions de dessin / transformation / gif animés
VIII. Les fonctions de restitution de l'image à l'écran
VIII-A. RepaintControl
VIII-B. FastRepaint
VIII-C. FastRepaintSetCorrection
VIII-D. FastRepaintSetClipControl
VIII-E. FastRepaintResetClip
IX. Les fonctions pour gérer les régions
IX-A. CreateRegionEllipse
IX-B. CreateRegionPolygon
IX-C. CreateRegionRect
IX-D. DeleteRegion
IX-E. DeleteAllRegions
IX-F. FrameRegion
IX-G. FillRegion
IX-H. HatchRegion
IX-I. GetRegionXY
IX-J. PointInRegion
IX-K. GetRegionRect
IX-L. RegionExists
IX-M. RegionAddRegion
IX-N. RegionCombine
IX-O. CreateRegionFromColor
IX-P. ScaleRegion
IX-Q. TranslateRegion
IX-R. RotateRegion
IX-S. RegionsIntersect
IX-T. RegionClone
IX-U. SetFormRegion
IX-V. ResetFormRegion
X. Sauvegarde d'images en mémoire
X-A. KeepImage
X-B. ResetImage
X-C. ImageExists
X-D. DeleteImage
X-E. DeleteAllImages
X-F. GetImageBitmap
XI. Gestion des données Exif
XI-A. GetExifData
XI-B. SetExifData
XI-C. GenerateThumbnail
XI-D. ImportExifData
XII. Gestion des Gif animés
XII-A. GifSetFrame
XII-B. GifGetFrameCount
XII-C. GifGetFrameDelay
XIII. Les fonctions de conversion
XIII-A. ImgToCtrlX et ImgToCtrlY
XIII-B. CtrlToImgX et CtrlToImgY
XIII-C. PointsToPixelsX et PointsToPixelsY
XIII-D. PixelToPointsX et PixelToPointsY
XIV. Les autres fonctions utiles
XIV-A. GetPixel
XIV-B. LongToRGB
XIV-C. SetXPTheme
XIV-D. SetDoubleBufferXP
XIV-E. DragForm
XIV-F. FontSizeToPixel
XV. Les propriétés
XV-A. ImageWidth et ImageHeight
XV-B. ImageFormat
XV-C. RefControl
XV-D. PenAlignMode
XV-E. FastRepaintReplace
XV-F. WrapX et WrapY
XVI. Conclusion
XVII. Les téléchargements


I. Introduction

GDI et GDI+ sont des librairies graphiques.
En d'autres termes ce sont des fonctions que l'on peut appeler depuis nos programmes en ayant pris soin auparavant de les déclarer : ce sont les fameuses API.
La librairie GDI est intégrée à toutes les versions de Windows, elle contient des fonctions de dessins basiques et ne sait gérer que le format Bitmap (BMP)

Pour pallier le manque de fonctionnalités de la librairie GDI, Microsoft a développé une autre librairie : GDI+ (ou GdiPlus).
Cette seconde librairie est beaucoup plus puissante et reconnaît en autre le format Jpeg et les données Exif intégrées aux images Jpeg, notamment par les appareils photos numériques.

La classe clGdiPlus, dont cet article est la documentation, encapsule ces API pour faciliter leur utilisations.

Exemples d'images obtenues grâce à cette classe : :


La carte de France est dessinée à partir des coordonnées des départements.
Les départements sont encadrés au passage de la souris, et on peut les sélectionner en cliquant dessus.
Des cercles de couleur matérialisent l'emplacement de certaines villes.



Les aiguilles de l'horloge se déplacent en fonction de l'heure.
Si on tire sur une aiguille l'heure change.


II. Remarques préalables


II-A. Remarques

- L'unité utilisée par cette classe est le pixel.

- La classe est développée sur Access 2003 au format Access 2000; j'essaye autant que je peux d'assurer la meilleure compatibilité avec les autres versions.

- Dans tous mes exemples je nomme clGdip l'instance de la classe et Image0 le contrôle image.

- Les paramètres optionnels sont notés : [NomduParamètre] = ValeurParDéfaut


II-B. Pré-requis

Il est nécessaire de posséder la librairie GDI+ de Microsoft.
Cette librairie est incorporée à Windows XP.
La librairie est en téléchargement pour les systèmes d'exploitation suivants (Windows 2000; Windows 98; Windows ME; Windows NT; Windows XP; Windows Vista) :

Lien vers la libraire en téléchargement sur Microsoft.com
Le fichier gdiplus.dll doit être placé dans le répertoire de l'application.


II-C. Compatibilité avec Excel

Pour utiliser la classe ClGdiPlus avec Excel, recherchez la constante de compilation Access ; remplacez :

#Const Access = True
			
par

#Const Access = False
			

III. Les fonctions de création et de sauvegarde


III-A. OpenFile

Ouvre un fichier.

Charge l'image en mémoire.
On peut ensuite accéder aux données Exif ou modifier l'image.

La fonction renvoit Vrai si le fichier a pû être ouvert.

Paramètres :


Paramètre Type Explication
pFile String Chemin du fichier image
[pThumbNail]=False Boolean Mettre à True pour ouvrir la miniature Exif
[pIcon]=False Boolean Mettre à True pour ouvrir l'icone associée au fichier

III-B. CloseFile

Ferme le fichier (ou le bitmap créé avec CreateBitmap).

Pensez à refermer l'image dès que possible pour libérer de la mémoire.

Seul une image peut être ouverte à la fois : la fonction CloseFile n'a donc pas besoin de paramètre.


III-C. CreateBitmap

Création d'une image vierge.
L'image est créée en mémoire; on peut ensuite dessiner sur cette image.

Paramètres :


Paramètre Type Explication
pWidth Long Largeur de l'image
pHeight Long Hauteur de l'image
[pResolution] = 96 Single Resolution de l'image (96 par défaut)

III-D. SaveFile

Sauvegarde l'image dans un fichier.

La fonction renvoit Vrai si le fichier a pû être sauvegardé.

Paramètres :


Paramètre Type Explication
pFile String Chemin du fichier de sauvegarde.
Il n'est pas possible d'écraser le fichier courant.
pFormat String Format du fichier : JPG,GIF,BMP,PNG,TIF.
[pQuality]=-1 Integer Qualité Jpeg (0-100)
Ne spécifiez pas ce paramètre pour garder la qualité de l'image d'origine.

III-E. SaveTransformFile

Sauvegarde l'image dans un fichier avec transformation (sans perte Jpeg).

Paramètres :


Paramètre Type Explication
pFile String Chemin du fichier de sauvegarde.
Il n'est pas possible d'écraser le fichier courant.
pTransformation String Transformation à appliquer

Exemple :
Rotation d'une image sans perte de qualité

If ClGdip.OpenFile("C:\MonFichier.jpg") then
    If ClGdip.SaveTransformFile("C:\MonFichierAvecRotation.jpg",EncoderValueTransformRotate90) then
        MsgBox "Image tournée et sauvegardée"
    End If
End If
				

III-F. SaveJpegLossLess

Sauvegarde l'image dans un fichier sans perte Jpeg.

A utiliser si uniquement modification de donnée Exif par exemple.

Paramètres :


Paramètre Type Explication
pFile String Chemin du fichier de sauvegarde.
Il n'est pas possible d'écraser le fichier courant.

Exemple :
Function de changement de la date du cliché

' Change le tag DateTimeOriginal d'une image
Public Function ChangeImageDateTime(ByVal pPath As String, ByVal pDate As Date) As Boolean
    Dim clGdip As ClGdiPlus
    On Error GoTo Gestion_Erreurs
    ' Création nouvelle instance de classe
    Set clGdip = New ClGdiPlus
    ' Ouverture du fichier
    clGdip.OpenFile pPath
    ' Exif : Mise à jour de la date du cliché
    If clGdip.SetExifData(TagDateTimeOriginal, pDate) Then
        ' Sauvegarde de l'image dans un autre fichier
        If clGdip.SaveJpegLossLess(pPath & ".backup") Then
            ' Fermeture du fichier initial
            clGdip.CloseFile
            ' Supprime le fichier original
            Kill pPath
            ' Renomme l'image avec le nom d'origine
            Name pPath & ".backup" as  pPath
            ChangeImageDateTime = True
         End If
    End If
    ' Libère l'instance de classe
    Set clGdip = Nothing
    On Error GoTo 0
    Exit Function
Gestion_Erreurs:
    Set clGdip = Nothing
    ChangeImageDateTime = False
End Function
				

IV. Autres fonctions de lecture / écriture de l'image


IV-A. GetPixels

Renvoit un tableau de pixels avec les couleurs ARGB

Paramètres :


Paramètre Type Explication
pPixels Tableau de Byte Tableau de points ARGB

La fonction renvoit un tableau de pixels ARGB.
A = Alpha = Transparence
R = Red = Rouge
G = Green = Vert
B = Blue = Bleu

Les valeurs sont comprises entre 0 et 255.

Exemple :
Lire les couleurs des pixels

' Tableau pour recevoir les pixels
Dim lPixels() As Byte
' Compteurs
Dim lCptX As Long, lCptY As Long
' Lecture des pixels dans le tableau
lPixels = ClGdip.GetPixels
' Boucle sur les pixels
For lCptX = 1 To UBound(lPixels(), 2)
    For lCptY = 1 To UBound(lPixels(), 3)
        ' Composante bleue = lPixels(1, lCptX, lCptY)
        ' Composante verte = lPixels(2, lCptX, lCptY)
        ' Composante rouge = lPixels(3, lCptX, lCptY)
        ' Composante alpha = lPixels(4, lCptX, lCptY)
    Next
Next
				

IV-B. SetPixels

Redessine l'image à partir un tableau de pixels avec les couleurs ARGB

Paramètres :


Paramètre Type Explication
pPixels Tableau de Byte Tableau de points RGB

Exemple :
Appliquer un filtre rouge sur l'image

' Tableau pour recevoir les pixels
Dim lPixels() As Byte
' Compteurs
Dim lCptX As Long, lCptY As Long
' Lecture des pixels de l'image
lPixels = ClGdip.GetPixels
' On boucle sur les pixels
For lCptX = 1 To UBound(lPixels(), 2)
    For lCptY = 1 To UBound(lPixels(), 3)
        ' On ne garde que la couleur rouge en mettant les deux autres composantes à zéro
        ' Annule la composante bleue
        lPixels(1, lCptX, lCptY) = 0
        ' Annule la composante verte
        lPixels(2, lCptX, lCptY) = 0
        ' Composante bleue = lPixels(1, lCptX, lCptY)
        ' Composante verte = lPixels(2, lCptX, lCptY)
        ' Composante rouge = lPixels(3, lCptX, lCptY)
        ' Composante alpha = lPixels(4, lCptX, lCptY)
    Next
Next
' On réinjecte les couleurs dans l'image
ClGdip.SetPixels lPixels
				

IV-C. SetBitmap

Définit l'image à partir d'un bitmap gdiplus

Voir GetBitmap pour un exemple d'utilisation.

Paramètres :


Paramètre Type Explication
pBitmap Long Identifiant d'un bitmap GdiPlus
[pClone] = Vrai Boolean Si Vrai, clone le bitmap.

IV-D. GetBitmap

Sauvegarde l'image dans un bitmap gdiplus

Paramètres :


Paramètre Type Explication
[pClone] = Faux Boolean Si Vrai, clone le bitmap.

La fonction renvoit un bitmap GdiPlus.

Exemple :
Affecter l'image d'une classe à une autre

' On ne clone pas l'image lors de l'appel à GetBitmap.
' Par compte on clone l'image lors de l'appel à SetBitmap.
' Ainsi on obtient dans la classe clGdipOut un clone de l'image issue de ClGdipIn
' Si on avait cloner deux fois l'image, l'image intérmédiaire ne serait jamais libérée
'		(=fuite de mémoire)
' Si on n'avait pas du tout cloner l'image, chaque classe pointerait vers la même image en mémoire 
'          	(=risque de libérer l'image dans une classe alors que l'autre voudrait encore l'utiliser)
lReturn = ClGdipOut.SetBitmap(ClGdipIn.GetBitmap("MonImage", False), True)
				

IV-E. SetImageArray

Définit l'image à partir d'un tableau de byte

Voir l'application Inclure des images jpeg dans un objet OLE pour un exemple d'utilisation.

Paramètres :


Paramètre Type Explication
pArray Tableau de Byte Données de l'image.

IV-F. GetImageArray

Sauvegarde l'image dans un tableau de byte

Voir l'application Inclure des images jpeg dans un objet OLE pour un exemple d'utilisation.

Paramètres :


Paramètre Type Explication
pArray Tableau de Byte Données de l'image.
pFormat String Format du fichier : JPG,GIF,BMP,PNG,TIF.
[pQuality]=-1 Integer Qualité Jpeg (0-100)
Ne spécifiez pas ce paramètre pour garder la qualité de l'image d'origine.

La fonction retourne un tableau de Byte contenant les données brutes de l'image.


IV-G. LoadBitmapFromControl

Création d'un bitmap à partir de l'image contenue dans un contrôle

Paramètres :


Paramètre Type Explication
pCtrl Image Contrôle Image.

V. Les fonctions de modification de l'image


V-A. ReplaceColor

Remplace une couleur de l'image par une autre.

Paramètres :


Paramètre Type Explication
pOldColor Long Ancienne couleur
pNewColor Long Nouvelle couleur
[pOldAlpha] = -1 Long Ancienne transparence (0 --> 255) Si paramètre omis ou égal à -1, toutes les transparences de 0 à 255 sont traitées
[pNewAlpha] = -1 Long Nouvelle transparence (0 --> 255) Si paramètre omis ou égal à -1, la transparence n'est pas modifiée
[pX1] = -1
[pY1] = -1
[pX2] = -1
[pY2] = -1
Long Coordonnées du rectangle à traiter

Exemple :
Remplace le blanc par la couleur de fond du formulaire

lReturn = ClGdip.ReplaceColor(vbWhite, Me.Section(acDetail).BackColor)
				

V-B. FillColor

Rempli l'image d'une couleur.

Paramètres :


Paramètre Type Explication
pColor Long Couleur de remplissage
[pColorGradient]=-1 Long Couleur pour dégradé
Le dégradé va de la couleur pColor vers la couleur pColorGradient
[pGradientVert] = Faux Boolean Mettre à Vrai pour un dégradé vertical
[pAlpha] = 255 Integer Transparence (0 --> 255)
[pX1] = -1
[pY1] = -1
[pX2] = -1
[pY2] = -1
Long Coordonnées du rectangle à remplir.

Exemple :
Rempli de blanc le quart de l'image en bas à droite

lReturn = ClGdip.FillColor(vbWhite, , , ClGdip.ImageWidth / 2, ClGdip.ImageHeight / 2)
				

V-C. ApplyColorMatrix

Applique une matrice de couleurs à l'image.

Paramètres :


Paramètre Type Explication
pRed, pGreen, pBlue, pAlpha Variant = Tableaux de single de dimension 5 1ère à 3ème valeur: Multiplicateurs des composantes rouge, vert, bleu
4ème valeur : Constante
5ème valeur : Valeur à ajouter
Les valeurs doivents être comprises entre -1 et 1
[pEmptyColor] = 0 Long Couleur de remplissage (-1 pour dessiner par dessus l'image).
Paramètre utile si on utilise de la transparence.
[pX1] = -1
[pY1] = -1
[pX2] = -1
[pY2] = -1
Long Coordonnées du rectangle à traiter.

Exemple :
Appliquer un filtre noir et blanc

        ClGdip.ApplyColorMatrix Array(0.222, 0.707, 0.071, 0, 0), _
                                Array(0.222, 0.707, 0.071, 0, 0), _
                                Array(0.222, 0.707, 0.071, 0, 0), _
                                Array(0, 0, 0, 1, 0), -1
				

V-D. Resize

Redimensionne l'image.

Paramètres :


Paramètre Type Explication
pWidth Long Nouvelle largeur
pHeight Long Nouvelle hauteur
[pAntialise] = Faux Boolean Si vrai alors l'image est lissée
[pKeepExifData] = Faux Boolean Si Vrai alors les données Exif sont réinjectées dans l'image après redimensionnement

Exemple :
Redimensionne l'image à 10% de sa taille d'origine

lReturn = ClGdip.Resize(ClGdip.ImageWidth / 10, ClGdip.ImageHeight / 10)
				

V-E. Crop

Découpe l'image.

Paramètres :


Paramètre Type Explication
[pLeft] = 0 Long Position à gauche
[pTop] = 0 Long Position en haut
[pWidth] = 0 Long Largeur
[pHeight] = 0 Long Hauteur
[pAntialise] = Faux Boolean Si vrai alors l'image est lissée
[pKeepExifData] = Faux Boolean Si Vrai alors les données Exif sont réinjectées dans l'image après le découpage

Exemple :
Découpe le quart haut-gauche de l'image

lReturn = ClGdip.Crop(0, 0, ClGdip.ImageWidth / 2, ClGdip.ImageHeight / 2)
				

V-F. Rotate

Rotation de l'image.

Paramètres :


Paramètre Type Explication
pAngle Long Angle de rotation en degrés
[pKeepExifData] = Faux Boolean Si Vrai alors les données Exif sont réinjectées dans l'image après la rotation

Exemple :
Tourne l'image de 30°

lReturn = ClGdip.Rotate(30)
				

V-G. RotateFlip

Rotation/Miroir de l'image.

Paramètres :


Paramètre Type Explication
pType Long Type de transformation (énumération EGdipRotateFlip)
[pKeepExifData] = Faux Boolean Si Vrai alors les données Exif sont réinjectées dans l'image après la rotation et/ou le mirroir

Exemple :
Retourne l'image horizontalement

lReturn = ClGdip.RotateFlip(RotateNoneFlipX)
				

VI. Les fonctions de dessin


VI-A. DrawPixel

Dessine un pixel.

Paramètres :


Paramètre Type Explication
pX Long Position horizontale du pixel
pY Long Position verticale du pixel
pColor Long Couleur du pixel
[pAlpha] = 255 Long Transparence du pixel (0 --> 255)

Exemple :
Dessiner un pixel rouge au milieu du contrôle

lReturn = ClGdip.DrawPixel(clgdip.ImageWidth,clgdip.ImageHeight,vbred) 
				

VI-B. DrawLine

Dessine une ligne.

Paramètres :


Paramètre Type Explication
pX1,pY1 Long Position du premier point
pX2,pY2 Long Position du deuxième point
[pPenColor] = vbBlack Long Couleur de la ligne
[pPenWidth] = 1 Long Epaisseur de la ligne
[pDash] = 0 Boolean Pointillés si Vrai
[pAlpha] = 255 Long Transparence du trait (0 --> 255)
[pArrowLength] = 0 Long Taille des traits de la flèche
Si > 0, affiche une flèche
[pStartAndEnd] = 0 Long Type de départ et de fin du trait (plat, carré, rond, triangle)
Voir énumération EGdipLineCap

Exemple :
Dessiner une ligne bleue pointillée de 4 pixels de large qui traverse le contrôle en diagonal

lReturn = ClGdip.DrawLine(0, 0, ClGdip.ImageWidth, ClGdip.ImageHeight, vbBlue, 4, True)
				

VI-C. DrawRectangle

Dessine un rectangle.

Paramètres :


Paramètre Type Explication
pX1,pY1,pX2,pY2 Long Coordonnées du rectangle
[pBackColor] = -1 Long Couleur de remplissage
   Laisser -1 pour un rectangle transparent.
[pPenColor] = vbBlack Long Couleur de la ligne
[pPenWidth] = 1 Long Epaisseur de la ligne
[pDash] = 0 Boolean Pointillés si Vrai
[pAlpha] = 255 Long Transparence du trait (0 --> 255)
[pRegion] = "" String Nom de la région à créer avec les mêmes coordonnées

Exemple :
Dessiner un rectangle aléatoire

' pBackColor = -1 siginifie qu'on dessine uniquement la bordure sans le fond
' pPenColor = vbBlue pour dessiner en bleu
lReturn = ClGdip.DrawRectangle(Rnd * ClGdip.ImageWidth, Rnd * ClGdip.ImageHeight, _
                Rnd * ClGdip.ImageWidth, Rnd * ClGdip.ImageHeight, _
                -1, vbBlue, 4)
				

VI-D. DrawEllipse

Dessine une ellipse.

Paramètres :


Paramètre Type Explication
pX1,pY1,pX2,pY2 Long Position de l'ellipse
[pType] = 0 Integer Type de positionnement
    Si pType = 0 : On passe un rectangle en paramètre, l'ellipse remplit ce rectangle
          pX1,Y1 : Point Haut-Gauche du rectangle
          pX2,Y2 : Point Bas-Droite du rectangle
    Si pType = 1 : on passe le centre et les rayons de l'ellipse en paramètre
          pX1,pY1 : Centre de l'ellipse
          pX2 : Rayon horizontal
          pY2 : Rayon vertical
[pBackColor] = -1 Long Couleur de remplissage
   Laisser -1 pour une ellipse transparente
[pPenColor] = vbBlack Long Couleur de la ligne
[pPenWidth] = 1 Long Epaisseur de la ligne
[pDash] = 0 Boolean Pointillés si Vrai
[pAlpha] = 255 Long Transparence du trait (0 --> 255)
[pStartAngle] = Null Single Angle de démarrage d'un arc en degré
[pSweepAngle] = Null Single Angle de balayage d'un arc en degré
[pRegion] = "" String Nom de la région à créer avec les mêmes coordonnées

Exemple :
Dessiner une ellipse au milieu du contrôle

' Dessin d'une ellipse rouge d'épaisseur 2, centrée au mileu du contrôle, remplie de vert, 
'   et de rayons 1/5è de la taille du contrôle
lReturn = ClGdip.DrawEllipse(ClGdip.ImageWidth / 2, ClGdip.ImageHeight / 2, ClGdip.ImageWidth / 5, ClGdip.ImageHeight / 5, 1, vbGreen, vbRed, 2)
				

VI-E. DrawPolygon

Dessine un polygone.

Paramètres :


Paramètre Type Explication
pPoints Variant Tableau de points formant le polygone : Array(X1,Y1,X2,Y2,X3,Y3,...)
[pBackColor] = -1 Long Couleur de remplissage
   Laisser -1 pour un rectangle transparent.
[pPenColor] = vbBlack Long Couleur de la ligne
[pPenWidth] = 1 Long Epaisseur de la ligne
[pDash] = 0 Boolean Pointillés si Vrai
[pAlpha] = 255 Long Transparence du trait (0 --> 255)
[pRegion] = "" String Nom de la région à créer avec les mêmes coordonnées

VI-F. DrawText

Dessine du texte.

Paramètres :


Paramètre Type Explication
pText String Texte à écrire
   Peut contenir des retours à la ligne (vbCrLf)
pSize Long Taille du texte en pixel
pFontName String Nom de la police (Arial, ...)
pX1,pY1,[pX2] = -1,[pY2] = -1Long Position du texte.
Le texte est écrit dans le rectangle défini par ces coordonnées
Si pX2 et pY2 ne sont pas renseignés, le texte est positionné sur le point de coordonnées pX1,pY1.
[pAlignHoriz] = 0Integer Alignement horizontal
          - 0 : Centre
          - 1 : Gauche
          - 2 : Droite
[pAlignVert] = 0Integer Alignement vertical
          - 0 : Centre
          - 1 : Haut
          - 2 : Bas
[pPenColor] = 0Long Couleur du texte
[pPenAlpha] = 255Integer Transparence du texte (0 --> 255)
[pBackColor] = -1Long Couleur de fond (-1 si transparent)
[pBackAlpha] = -1Integer Transparence du fond (0 --> 255)
[pItalic] = FalseBoolean Italique Vrai/Faux
[pBold] = FalseBoolean Gras Vrai/Faux
[pUnderline] = FalseBoolean Souligné Vrai/Faux
[pStrikeOut] = FalseBoolean Barré Vrai/Faux
[pAntialiase] = FauxBoolean Lisser le texte Vrai/Faux
[pOnlyGetSize] = FauxBoolean Si vrai, n'écrit pas le texte et renvoit la taille du texte dans pX1,pY1,pX2,PY2

Exemple :
Ecrit un texte en haut à gauche de l'image, en bleu

lReturn = ClGdip.DrawText("TEST", 30, "Arial", 0, 0, ClGdip.ImageWidth, ClGdip.ImageHeight, 0, 0, vbBlue)
				

VI-G. DrawImage

Affiche une image de la liste d'images.

Paramètres :


Paramètre Type Explication
pName String Identifiant de l'image
pX1,pY1,[pX2],[pY2] Long Position de l'image
     Si pX2 et pY2 sont nuls alors on conserve la taille de l'image
     Si pX2 = 0 ou pY2 =0 alors on calcule la dimension manquante par rapport à l'autre en conservant le rapport hauteur/largeur.
     Si pImgSizeMode = acOLESizeAutoSize :
          pX1,pY1 : Position de l'image
          pX2 : Largeur de l'image
          pY2 : Hauteur de l'image
     Si pImgSizeMode = acOLESizeZoom/acOLESizeStretch/acOLESizeClip :
          pX1,Y1 : Point Haut-Gauche du rectangle contenant l'image
          pX2,Y2 : Point Bas-Droite du rectangle contenant l'image
[pTranspcolor] = -1 Integer Couleur de transparence : les points de cette couleur ne
     seront pas dessinés
[pImgSizeMode] = acOLESizeStretch Integer Type d'affichage de l'image (Echelle par défaut)
[pImgPictureAlignment] = 2 Integer Position de l'image (centrée par défaut)
[pPercent]=255 Integer Pourcentage pour affichage transclucide (0:invisible;255:normal)
[pAntialiase] = Faux Boolean Lisse l'image si Vrai
[pRegion] = "" String Ajoute une région de nom pRegion
[pRegionColor] = -1 Long Si renseigné, la région ajoutée contient les points de couleurs différentes de pRegionColor
[pRegionAlpha] = -1 Long Si renseigné, la région ajoutée contient les points de transparences différentes de pRegionAlpha

VI-H. DrawBitmap

Dessine un bitmap gdiplus sur l'image.

Paramètres :


Paramètre Type Explication
pBitmap Long Identifiant du bitmap GdiPlus
pX1,pY1,[pX2],[pY2] Long Position de l'image
     Si pX2 et pY2 sont nuls alors on conserve la taille de l'image
     Si pX2 = 0 ou pY2 =0 alors on calcule la dimension manquante par rapport à l'autre en conservant le rapport hauteur/largeur.
     Si pImgSizeMode = acOLESizeAutoSize :
          pX1,pY1 : Position de l'image
          pX2 : Largeur de l'image
          pY2 : Hauteur de l'image
     Si pImgSizeMode = acOLESizeZoom/acOLESizeStretch/acOLESizeClip :
          pX1,Y1 : Point Haut-Gauche du rectangle contenant l'image
          pX2,Y2 : Point Bas-Droite du rectangle contenant l'image
[pTranspcolor] = -1 Integer Couleur de transparence : les points de cette couleur ne
     seront pas dessinés
[pImgSizeMode] = acOLESizeStretch Integer Type d'affichage de l'image (Echelle par défaut)
[pImgPictureAlignment] = 2 Integer Position de l'image (centrée par défaut)
[pPercent]=255 Integer Pourcentage pour affichage transclucide (0:invisible;255:normal)
[pAntialiase] = Faux Boolean Lisse l'image si Vrai
[pRegion] = "" String Ajoute une région rectangulaire de nom pRegion
[pRegionColor] = -1 Long Si renseigné, la région ajoutée contient les points de couleurs différentes de pRegionColor
[pRegionAlpha] = -1 Long Si renseigné, la région ajoutée contient les points de transparences différentes de pRegionAlpha

VII. Les fonctions pour gérer la liste d'images


VII-A. ImageListAdd

Ajoute une image à la liste d'image.

Paramètres :


Paramètre Type Explication
pName String Identifiant de l'image
[pFile]="" String Chemin du fichier de l'image
   Si aucun fichier n'est passé en paramètre alors on sauvegarde l'image
   en mémoire dans la liste d'image
[pWidth]=0
[pHeight]=0
Long Taille de l'image
   Si pWidth et pHeight sont nulles toutes les deux l'image conserve sa taille
   Si seulement une des deux tailles est nulles alors l'autre est calculée en
     en conservant les proportions de l'image d'origine.
[pAntialiase] = Faux Boolean Lisse l'image lors du redimensionnement si Vrai.
[pThumbNail] = Faux Boolean Lecture de la miniature intégrée à un Jpeg
(Nécessite GDI+)
[pIcon] = Faux Boolean Si Vrai, extrait l'icone associée au fichier.

VII-B. ImageListGetBitmap