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 :
par
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é |
Public Function ChangeImageDateTime(ByVal pPath As String, ByVal pDate As Date) As Boolean
Dim clGdip As ClGdiPlus
On Error GoTo Gestion_Erreurs
Set clGdip = New ClGdiPlus
clGdip.OpenFile pPath
If clGdip.SetExifData(TagDateTimeOriginal, pDate) Then
If clGdip.SaveJpegLossLess(pPath & ".backup") Then
clGdip.CloseFile
Kill pPath
Name pPath & ".backup" as pPath
ChangeImageDateTime = True
End If
End If
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 |
Dim lPixels() As Byte
Dim lCptX As Long, lCptY As Long
lPixels = ClGdip.GetPixels
For lCptX = 1 To UBound(lPixels(), 2)
For lCptY = 1 To UBound(lPixels(), 3)
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 |
Dim lPixels() As Byte
Dim lCptX As Long, lCptY As Long
lPixels = ClGdip.GetPixels
For lCptX = 1 To UBound(lPixels(), 2)
For lCptY = 1 To UBound(lPixels(), 3)
lPixels(1, lCptX, lCptY) = 0
lPixels(2, lCptX, lCptY) = 0
Next
Next
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 |
lReturn = ClGdipOut.SetBitmap(ClGdipIn.GetBitmap("MonImage", False), True)
|
IV-E. SetImageArray
| Paramètre |
Type |
Explication |
| pArray |
Tableau de Byte |
Données de l'image. |
IV-F. GetImageArray
| 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 |
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 |
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] = -1 | Long |
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] = 0 | Integer |
Alignement horizontal
- 0 : Centre
- 1 : Gauche
- 2 : Droite |
| [pAlignVert] = 0 | Integer |
Alignement vertical
- 0 : Centre
- 1 : Haut
- 2 : Bas |
| [pPenColor] = 0 | Long |
Couleur du texte |
| [pPenAlpha] = 255 | Integer |
Transparence du texte (0 --> 255) |
| [pBackColor] = -1 | Long |
Couleur de fond (-1 si transparent) |
| [pBackAlpha] = -1 | Integer |
Transparence du fond (0 --> 255) |
| [pItalic] = False | Boolean |
Italique Vrai/Faux |
| [pBold] = False | Boolean |
Gras Vrai/Faux |
| [pUnderline] = False | Boolean |
Souligné Vrai/Faux |
| [pStrikeOut] = False | Boolean |
Barré Vrai/Faux |
| [pAntialiase] = Faux | Boolean |
Lisser le texte Vrai/Faux |
| [pOnlyGetSize] = Faux | Boolean |
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