ACCESS + EXCEL : Classe de gestions des images avec Gdi+
Date de publication : 15/05/08 , Date de mise à jour : 16/09/09
Par
Thierry GASPERMENT (arkham46.developpez.com/)
Module de classe VBA pour faciliter l'utilisation de la librairie graphique gdiplus.dll (GDI+)
Version actuelle : v1.6
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. CreateBitmapForImage
III-E. SaveFile
III-F. SaveTransformFile
III-G. 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
IV-H. GetIPictureDisp
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. ImageListAddFromArray
VII-G. ImageListAddPictureMask
VII-H. ImageListNew
VII-I. ImageListExists
VII-J. ImageListDel
VII-K. ImageListDelAll
VII-L. ImageListClone
VII-M. ImageListWidth
VII-N. ImageListHeight
VII-O. ImageListGetIPictureDisp
VII-P. Fonctions de dessin / transformation / gif animés
VIII. Les fonctions de transformations
VIII-A. WorldRotate
VIII-B. WorldTranslate
VIII-C. WorldScale
VIII-D. WorldReset
VIII-E. WorldPush
VIII-F. WorldPop
IX. Les fonctions de restitution de l'image à l'écran
IX-A. RepaintControl
IX-B. RepaintControlNoFormRepaint
IX-C. FastRepaint
IX-D. FastRepaintSetCorrection
IX-E. FastRepaintSetClipControl
IX-F. FastRepaintResetClip
X. Les fonctions pour gérer les régions
X-A. CreateRegionEllipse
X-B. CreateRegionPolygon
X-C. CreateRegionRect
X-D. DeleteRegion
X-E. DeleteAllRegions
X-F. FrameRegion
X-G. FillRegion
X-H. HatchRegion
X-I. GetRegionXY
X-J. PointInRegion
X-K. GetRegionRect
X-L. RegionExists
X-M. RegionAddRegion
X-N. RegionCombine
X-O. CreateRegionFromColor
X-P. ScaleRegion
X-Q. TranslateRegion
X-R. RotateRegion
X-S. RegionsIntersect
X-T. RegionClone
X-U. SetFormRegion
X-V. ResetFormRegion
XI. Sauvegarde d'images en mémoire
XI-A. KeepImage
XI-B. ResetImage
XI-C. ImageExists
XI-D. DeleteImage
XI-E. DeleteAllImages
XI-F. GetImageBitmap
XII. Gestion des données Exif
XII-A. GetExifData
XII-B. SetExifData
XII-C. GenerateThumbnail
XII-D. ImportExifData
XIII. Gestion des Gif animés
XIII-A. GifSetFrame
XIII-B. GifGetFrameCount
XIII-C. GifGetFrameDelay
XIV. Gestion des textures
XIV-A. TextureAddFromFile
XIV-B. TextureAddFromImage
XIV-C. TextureAddFromControl
XIV-D. TextureDel
XIV-E. TextureTranslate
XIV-F. TextureWidth
XIV-G. TextureHeight
XV. Gestion des polices de caractères
XV-A. FontPrivateAddFromFile
XV-B. FontPrivateAddFromByte
XV-C. FontsPrivateDelete
XV-D. FontsEnumerate
XVI. Les fonctions de conversion
XVI-A. ImgToCtrlX et ImgToCtrlY
XVI-B. CtrlToImgX et CtrlToImgY
XVI-C. PointsToPixelsX et PointsToPixelsY
XVI-D. PixelToPointsX et PixelToPointsY
XVII. Les autres fonctions utiles
XVII-A. GetPixel
XVII-B. LongToRGB
XVII-C. SetXPTheme
XVII-D. SetDoubleBufferXP
XVII-E. DragForm
XVII-F. FontSizeToPixel
XVII-G. PixelToFontSize
XVII-H. GetUserFormHandle
XVII-I. GetClientHandle
XVII-J. PathIsImage
XVIII. Les propriétés
XVIII-A. ImageWidth et ImageHeight
XVIII-B. ImageFormat
XVIII-C. RefControl
XVIII-D. PenAlignMode
XVIII-E. FastRepaintReplace
XVIII-F. WrapX et WrapY
XVIII-G. DrawSmooth
XVIII-H. DrawWithoutTransparency
XVIII-I. FillTexture
XVIII-J. PenTexture
XVIII-K. IconBackColor
XVIII-L. AntialisingLevel
XIX. Conclusion
XX. 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
- Si non mentionné, les fonctions renvoient False (Faux) en cas d'échec (ou Vrai si succès).
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.
Remarque pour Office 2007 :
Utilisez la version 2007 de clGdiplus si vous souhaitez vous passer de la librairie gdiplus.dll.
En effet Office 2007 installe une version de gdiplus dans les fichiers communs.
Il n'est alors plus nécessaire de déployer le fichier gdiplus.dll dans ce cas.
Toutes versions :
Télécharger la classe au format texte
(HTTP)
Pour Office 2007 :
Télécharger la classe au format texte pour Access 2007
(HTTP)
II-C. Compatibilité avec Excel
Pour utiliser la classe ClGdiPlus avec Excel, recherchez la constante de compilation Access ; remplacez :
par
Le dessin se fait alors dans un contrôle sur un UserForm.
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 renvoie 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. CreateBitmapForImage
Création d'une image vierge.
L'image a la taille du contrôle donné en paramètre.
L'image est créée en mémoire; on peut ensuite dessiner sur cette image.
Paramètres :
| Paramètre |
Type |
Explication |
| pImgCtrl |
Contrôle |
Contrôle qui détermine la taille de l'image. |
| [pResolution] = 96 |
Single |
Resolution de l'image (96 par défaut) |
III-E. SaveFile
Sauvegarde l'image dans un fichier.
La fonction renvoie 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-F. 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-G. 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
Renvoie un tableau de pixels avec les couleurs ARGB
Paramètres :
| Paramètre |
Type |
Explication |
| pPixels |
Tableau de Byte |
Tableau de points ARGB |
La fonction renvoi 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 renvoie un bitmap GdiPlus.
Exemple :
| Affecter l'image d'une classe à une autre |
lReturn = ClGdipOut.SetBitmap(ClGdipIn.GetBitmap(False), True)
|
IV-E. SetImageArray
| Paramètre |
Type |
Explication |
| pArray |
Tableau de Byte |
Données de l'image. |
| pAttachment |
Boolean |
Mettre à Vrai si les données proviennent d'un champ pièce-jointe (Access >= 2007). |
Exemple :
| Charge une image à partir d'un champ pièce-jointe |
oGdi.SetImageArray DLookup("data.filedata", "Timages", "id=""btnGIF"""), True
|
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. |
IV-H. GetIPictureDisp
Renvoie l'image dans un objet IPictureDisp
Cet objet peut être utilisé pour une image du ruban.
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 |
[pX1] = -1 [pY1] = -1 [pX2] = -1 [pY2] = -1 |
Long |
Coordonnées du rectangle à remplir. |
| [pAlpha] = 255 |
Integer |
Transparence (0 --> 255) |
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 |
Integer |
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 |
Integer |
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 |
Integer |
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 |
EGdipTypeEllipse |
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 |
Integer |
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 |
Integer |
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.
Renvoie un boolean indiquant si le dessin s'est correctement déroulé.
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 renvoie 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
Renvoie le bitmap gdiplus d'une image de la liste.
Voir ImageListAddBitmap pour un exemple d'utilisation.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de l'image |
| [pClone]= Faux |
Boolean |
Si Vrai, clone le bitmap lu dans la liste d'images.
|
VII-C. ImageListAddBitmap
Ajoute une image à la liste d'images à partir d'un bitmap gdiplus.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de l'image |
| pBitmap |
Long |
Identifiant d'un bitmap GdiPlus |
| [pClone]= True |
Boolean |
Si Vrai, clone le bitmap avant de l'insérer dans la liste d'images.
|
Exemple :
| Passage d'une image d'une classe à un autre classe |
lReturn = ClGdipOut.ImageListAddBitmap("MonImage", ClGdipIn.ImageListGetBitmap("MonImage", False), True)
|
VII-D. ImageListAddRect
Ajoute une image à la liste d'images à partir d'une portion de l'image courante.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de l'image |
| pX1,pY1,pX2,pY2 |
Long |
Coordonnées du rectangle à copier.
|
VII-E. ImageListAddFromControl
Ajoute une image à la liste d'images à partir de l'image intégrée à un contrôle.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de l'image |
| pCtrl |
Image |
Contrôle image contenant l'image à charger. |
VII-F. ImageListAddFromArray
Ajoute une image à la liste d'images à partir d'un tableau de byte.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de l'image |
| pArray |
Tableau de Byte |
Données de l'image, équivalent au contenu d'un fichier image jpeg, png, gif, ... |
| pAttachment |
Boolean |
Mettre à Vrai si les données proviennent d'un champ pièce-jointe (Access >= 2007). |
Exemple :
| Charge une image à partir d'un champ pièce-jointe |
oGdi.ImageListAddFromArray "IdImage", DLookup("data.filedata", "Timages", "id=""btnGIF"""), True
|
VII-G. ImageListAddPictureMask
Ajoute une image à la liste d'images à partir à partir d'un bitmap et d'un masque gdi32.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de l'image |
| pPicture |
Long |
Identifiant d'un bitmap gdi32. |
| pMask |
Long |
Identifiant d'un masque gdi32. |
| pBackColor |
Long |
Couleur de fond de l'image. |
VII-H. ImageListNew
Crée une image vierge dans la liste d'images.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de l'image |
| pWidth |
Long |
Largeur de l'image |
| pHeight |
Long |
Hauteur de l'image |
VII-I. ImageListExists
Teste si l'image existe déjà dans la liste.
La fonction renvoie Vrai si l'image est déjà dans la liste
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de l'image |
VII-J. ImageListDel
Supprime une image de la liste d'images.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de l'image |
VII-K. ImageListDelAll
Supprime toutes les images de la liste d'images.
VII-L. ImageListClone
Clone une image de la liste d'image.
Paramètres :
| Paramètre |
Type |
Explication |
| pNameSource |
String |
Identifiant de l'image source |
| pNameDest |
String |
Identifiant de l'image destination |
VII-M. ImageListWidth
Largeur d'une image de la liste.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de l'image |
VII-N. ImageListHeight
Hauteur d'une image de la liste.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de l'image |
VII-O. ImageListGetIPictureDisp
Renvoie l'image dans un objet IPictureDisp
Cet objet peut être utilisé pour une image du ruban.
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de l'image |
VII-P. Fonctions de dessin / transformation / gif animés
Les fonctions de dessin / transformation / gif animés existent également pour les images de la liste d'images.
Ces fonctions ont un préfixe ImageList et acceptent les même paramètres que les fonctions originales.
Le premier paramètre supplémentaire PImage est le nom de l'image de la liste.
Liste de ces fonctions:
| Nom de la fonction |
Description |
| ImageListDrawImage |
Affiche une image de la liste d'images sur une autre image de la liste |
| ImageListDrawBitmap |
Dessine un bitmap gdiplus sur une image de liste |
| ImageListDrawLine |
Dessine une ligne sur une image de la liste |
| ImageListDrawPixel |
Dessine un pixel sur une image de la liste |
| ImageListDrawRectangle |
Dessine un rectangle sur une image de la liste |
| ImageListDrawEllipse |
Dessine une ellipse sur une image de la liste |
| ImageListDrawPolygon |
Dessine un polygone sur une image de la liste |
| ImageListDrawText |
Dessine du texte sur une image de la liste |
| ImageListGetPixel |
Renvoi la couleur d'un pixel d'une image de la liste |
| ImageListGetPixels |
Renvoi un tableau de long contenant les pixels d'une image de la liste |
| ImageListSetPixels |
Injecte un tableau de byte contenant les pixels dans une image de la liste |
| ImageListRotate |
Rotation d'une image de la liste |
| ImageListRotateFlip |
Rotation/Miroir d'une image de la liste |
| ImageListResize |
Redimensionne une image de la liste |
| ImageListCrop |
Découpe une image de la liste |
| ImageListCrop |
Découpe une image de la liste |
| ImageListFillColor |
Remplit une image de la liste d'une couleur |
| ImageListReplaceColor |
Remplace une couleur d'une image de la liste |
| ImageListApplyColorMatrix |
Applique une matrice de couleurs à une image de la liste |
| ImageListGifSetFrame |
Change l'image courante d'un gif animé de la liste d'image |
| ImageListGifGetFrameCount |
Nombre d'images d'un gif animé de la liste d'images |
| ImageListGifGetFrameDelay |
Delais d'affichage des images d'un gif animé de la liste d'images |
VIII. Les fonctions de transformations
Ces fonctions appliquent une transformation au contexte d'affichage.
Les opérations de dessin effectuées se verront appliquer ces transformations.
VIII-A. WorldRotate
Effectue une rotation.
Cette rotation a pour point pivot le point en haut à gauche.
Paramètres :
| Paramètre |
Type |
Explication |
| pAngle |
Single |
Angle de rotation en degrés |
| pRight |
Boolean |
Mettre à True pour ajouter cette transformation après la transformation active.
Sinon elle est effectuée avant. |
VIII-B. WorldTranslate
Effectue une translation.
Paramètres :
| Paramètre |
Type |
Explication |
| pdX |
Single |
Translation horizontale |
| pdY |
Single |
Translation verticale |
| pRight |
Boolean |
Mettre à True pour ajouter cette transformation après la transformation active.
Sinon elle est effectuée avant. |
VIII-C. WorldScale
Effectue une mise à l'échelle.
Paramètres :
| Paramètre |
Type |
Explication |
| psX |
Single |
Mise à l'échelle horizontale |
| psY |
Single |
Mise à l'échelle verticale |
| pRight |
Boolean |
Mettre à True pour ajouter cette transformation après la transformation active.
Sinon elle est effectuée avant. |
VIII-D. WorldReset
Annule les transformations.
VIII-E. WorldPush
Sauvegarde les transformations.
Restaurez avec WolrdPop.
VIII-F. WorldPop
Restaure les transformations préalablement sauvegardées avec WolrdPush.
IX. Les fonctions de restitution de l'image à l'écran
IX-A. RepaintControl
Injecte l'image dans un contrôle.
Paramètres :
| Paramètre |
Type |
Explication |
| pControl |
Image |
Contrôle dans lequel est injecté l'image |
| [pResizeBefore]=False |
Boolean |
Si Vrai, redimensionne l'image avant |
| [pResizeAntialise]=False |
Boolean |
Anti-aliasing lors du redimensionnement |
| [pUseEMF]=False |
Boolean |
Pour ACCESS uniquement : Utilisation du type d'image EMF
A essayer pour améliorer la qualité de l'image dessinée. |
| Affichage de l'image dans le contrôle Image0 avec redimensionnement et lissage |
clGdip.RepaintControl Me.Image0,True,True
|
IX-B. RepaintControlNoFormRepaint
Injecte l'image dans un contrôle, mais ne la dessine que temporairement.
Cette fonction peut être utilisée pour réduire les scintillements (ou "flash") à l'écran.
Il peut y avoir des légers décalages d'un ou deux pixels, qu'on peut essayer de corriger avec la fonction FastRepaintSetCorrection et/ou en retirant les bordures de l'image.
Paramètres :
| Paramètre |
Type |
Explication |
| pControl |
Image |
Contrôle dans lequel est injecté l'image |
| [pResizeBefore]=False |
Boolean |
Si Vrai, redimensionne l'image avant |
| [pResizeAntialise]=False |
Boolean |
Anti-aliasing lors du redimensionnement |
| [pUseEMF]=False |
Boolean |
Pour ACCESS uniquement : Utilisation du type d'image EMF
A essayer pour améliorer la qualité de l'image dessinée. |
IX-C. FastRepaint
Dessine directement sur le formulaire.
L'affichage est plus rapide mais temporaire.
Il peut y avoir des légers décalages d'un ou deux pixels, qu'on peut essayer de corriger avec la fonction FastRepaintSetCorrection et/ou en retirant les bordures de l'image.
Paramètres :
| Paramètre |
Type |
Explication |
| pImgCtrl |
Image |
Contrôle déterminant l'emplacement de l'image |
| [pTranspColor] = -1 |
Long |
Couleur à ne pas dessiner. |
| [pPercent] = 255 |
Integer |
Transparence (0 à 255). |
| [pAntialiase] = Faux |
Boolean |
Lisse l'image si Vrai. |
| [phDc] = 0 |
Long |
Handle d'un device contexte si connu. |
| [phWnd] = 0 |
Long |
Handle d'une fenêtre si connu. |
IX-D. FastRepaintSetCorrection
Corrections pour la fonction FastRepaint.
*Dest pour correction sur le formulaire.
*Src pour correction sur l'image dessiné.
Paramètres :
| Paramètre |
Type |
Explication |
| pLeftDest, pLeftSrc |
Long |
Correction à gauche |
| pTopDest, pTopSrc |
Long |
Correction à droite |
| pWidthDest, pWidthSrc |
Long |
Correction de largeur |
| pHeightDest, pHeightSrc |
Long |
Correction de hauteur |
IX-E. FastRepaintSetClipControl
Définit l'emplacement à redessiner avec le fonction FasRepaint.
Permet de placer des contrôles sur l'images et de ne pas dessiner par dessus si on utilise la fonction FastRepaint.
Paramètres :
| Paramètre |
Type |
Explication |
| pCtrl |
Contrôle |
Contrôle dont l'emplacement est à inclure ou exclure |
| pInclude |
Boolean |
Si Vrai, le contrôle spécifié délimite un rectangle qui sera redessiné à l'appel de la fonction FastRepaint.
Si Faux, le contrôle spécifié délimite un rectangle qui ne sera pas redessiné. |
| pCorrectLeft |
Long |
Correction à gauche en pixels |
| pCorrectTop |
Long |
Correction en haut en pixels |
| pCorrectRight |
Long |
Correction à droite en pixels |
| pCorrectBottom |
Long |
Correction en bas en pixels |
IX-F. FastRepaintResetClip
Réinitialise l'emplacement à redessiner avec le fonction FasRepaint.
Après l'appel de cette fonction, l'image entière est à nouveau dessinée.
X. Les fonctions pour gérer les régions
X-A. CreateRegionEllipse
Ajoute une région elliptique.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Identifiant de la region |
| pX1,pY1,pX2,pY2 |
Long |
Position de l'ellipse |
| [pType] = 0 |
EGdipTypeEllipse |
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 |
X-B. CreateRegionPolygon
Ajoute une région polygonale.
Pensez à fermer le polygone pour créer une région.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Identifiant de la region |
| pPoints |
Variant |
Tableau de points formant le polygone Array(X1,Y1,X2,Y2,X3,Y3,...) |
X-C. CreateRegionRect
Ajoute une région rectangulaire.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Identifiant de la region |
| pX1,pY1 |
Long |
Point Haut-Gauche du rectangle |
| pX2,pY2 |
Long |
Point Bas-Droite du rectangle |
X-D. DeleteRegion
Supprime une région.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Identifiant de la region à supprimer |
X-E. DeleteAllRegions
Supprime toutes les régions.
X-F. FrameRegion
Dessine un trait qui encadre la région.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Identifiant de la region |
| [pPenColor] = vbBlack |
Long |
Couleur du trait |
| [pPenWidth] = 1 |
Long |
Epaisseur du trait |
| [pDash] = 0 |
Boolean |
Pointillés si Vrai |
| [pAlpha] = 255 |
Integer |
Transparence du trait (0 --> 255) |
| [pInside] = Faux |
Boolean |
Encadre à l'intérieur si Vrai |
X-G. FillRegion
Remplit une region d'une couleur.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Identifiant de la region |
| [pColor] = vbBlack |
Long |
Couleur de remplissage |
| [pColorGradient] = -1 |
Long |
Deuxième couleur pour dégradé |
| [pGradientVert] = Faux |
Boolean |
Mettre à Vrai pour un dégradé vertical |
| [pAlpha] = 255 |
Integer |
Transparence du remplissage (0 --> 255) |
X-H. HatchRegion
Hachure une région.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Identifiant de la region |
| [pColor] = vbBlack |
Long |
Couleur de remplissage |
| [pBackColor] = -1 |
Long |
Deuxième couleur pour le fond |
| [pStyle] = 0 |
Long |
Type de hachure (énumeration EGdipHatchStyle) |
| [pAlpha] = 255 |
Integer |
Transparence des hachures(0 --> 255) |
X-I. GetRegionXY
Identifie la region située sur un point.
Paramètres :
| Paramètre |
Type |
Explication |
| pX |
Long |
Position X du point |
| pY |
Long |
Position Y du point |
| [pInclude] |
Variant |
Tableau de régions à inclure |
| [pExclude] |
Variant |
Tableau de régions à exclure |
La fonction renvoie le nom de la région située sur le point précisé.
Exemple :
| Recherche l'identifiant de la région sous le curseur de la souris |
Private Sub Image0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim lRegion As String
lRegion = ClGdip.GetRegionXY(ClGdip.CtrlToImgX(X, Me.Image0), ClGdip.CtrlToImgY(Y, Me.Image0))
End Sub
|
X-J. PointInRegion
Teste si un point est dans une region.
Paramètres :
| Paramètre |
Type |
Explication |
| pX |
Long |
Position X du point |
| pY |
Long |
Position Y du point |
| pRegion |
String |
Nom de la région à tester |
La fonction renvoie Vrai si le point est dans la région précisée en paramètre.
X-K. GetRegionRect
Coordonnées rectangulaires d'une région.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Identifiant de la région. |
| pX1, pY1, pX2, pY2 |
Long |
Coordonnées du rectangle contenant la région. |
X-L. RegionExists
Teste si une région existe.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Nom de la région à tester |
La fonction renvoie Vrai si la région existe.
X-M. RegionAddRegion
Ajoute une région à une autre région.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Nom de la région cible |
| pRegionToAdd |
String |
Nom de la région à ajouter |
La fonction renvoie Vrai si l'opération est réussie.
X-N. RegionCombine
Combine deux régions.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion1 |
String |
Nom de la première région Cette région reçoit la région résultante de la combinaison
Attention : La fonction FrameRegion ne fonctionnera plus pour cette région. |
| pRegion2 |
String |
Nom de la deuxième région |
| pCombineMode |
Long |
Mode de combinaison Voir l'énumération EGdipCombineMode. |
X-O. CreateRegionFromColor
Ajoute une région définie par la couleur des points.
Attention : il n'est pas possible d'encadrer cette région avec la fonction FrameRegion.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Nom de la région à créer |
| [pColor]=-1 |
Long |
Couleur déterminant la région |
| [pAlpha]=-1 |
Long |
Transparence déterminant la région |
| pIncludeColor |
Boolean |
- Vrai : La région contient les points de couleur pColor et de transparence pAlpha
- Faux : La région contient les points de couleur différente de pColor et de transparence différente de pAlpha |
| [pPointX]=-1, [pPointY]=-1 |
Long |
Si renseigné, seuls les points adjacents sont traités (à la manière du pot de peinture de paint) |
X-P. ScaleRegion
Redimensionne une région.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Nom de la région |
| pScaleX, pScaleY |
Single |
Facteurs de redimensionnement |
X-Q. TranslateRegion
Déplace une région.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Nom de la région |
| pdX, pdY |
Single |
Nombre de pixels de déplacement |
X-R. RotateRegion
Applique une rotation à une région.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Nom de la région |
| pAngle |
Single |
Angle en degré |
| pCenter |
Booléen |
Si vrai, le rectangle contenant la région est recentré après rotation |
X-S. RegionsIntersect
Teste si deux régions ont une intersection.
La fonction renvoie Vrai si les deux régions ont une intersection.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion1 |
String |
Nom de la première région |
| pRegion2 |
String |
Nom de la deuxième région
Si ce paramètre est laissé vide, il sera renseigné avec la première région trouvée qui a une intersection avec pRegion1 |
X-T. RegionClone
Clone une région.
Paramètres :
| Paramètre |
Type |
Explication |
| pRegion |
String |
Nom de la région à cloner |
| pRegionClone |
String |
Nom de la région clone |
X-U. SetFormRegion
Limite l'affichage de formulaire a une région.
Paramètres :
| Paramètre |
Type |
Explication |
| pForm |
Formulaire |
Le formulaire à limiter |
| pRegion |
String |
Nom de la région |
| [pCtrlRef]=Nothing |
Image |
Contrôle image de référence A utiliser si la région a été créée par rapport à l'image |
| pInverseRegion |
Boolean |
Si Vrai, la région est inversée |
| [pCorrectionLeft]=0 |
Single |
Correction de position gauche de la région en pixel |
| [pCorrectionTop]=0 |
Single |
Correction de position haute de la région en pixel |
| [pCorrectionWidth]=0 |
Single |
Correction de largeur de la région en pixel |
| [pCorrectionHeight]=0 |
Single |
Correction de hauteur de la région en pixel |
X-V. ResetFormRegion
Rétablit l'affichage du formulaire complet.
Paramètres :
| Paramètre |
Type |
Explication |
| pForm |
Formulaire |
Le formulaire à rétablir |
XI. Sauvegarde d'images en mémoire
XI-A. KeepImage
Sauvegarde l'image en mémoire
Paramètres :
| Paramètre |
Type |
Explication |
| [PImage]="Default" |
String |
Nom de la sauvegarde |
L'image est sauvegardée en mémoire, prête à être rétablie avec la fonction ResetImage.
XI-B. ResetImage
Rétablit l'image de la mémoire
Paramètres :
| Paramètre |
Type |
Explication |
| [PImage]="Default" |
String |
Nom de la sauvegarde |
XI-C. ImageExists
Test si une image sauvegardée existe en mémoire.
Paramètres :
| Paramètre |
Type |
Explication |
| [PImage]="Default" |
String |
Nom de la sauvegarde à tester |
XI-D. DeleteImage
Supprime une image en mémoire.
Paramètres :
| Paramètre |
Type |
Explication |
| [PImage]="Default" |
String |
Nom de la sauvegarde à supprimer |
XI-E. DeleteAllImages
Supprime toutes les images en mémoire.
Paramètres :
XI-F. GetImageBitmap
Renvoie le bitmap gdiplus d'une image.
Paramètres :
| Paramètre |
Type |
Explication |
| [PImage]="Default" |
String |
Nom de la sauvegarde à supprimer |
| [pClone]= Faux |
Boolean |
Si Vrai, clone le bitmap. |
XII. Gestion des données Exif
XII-A. GetExifData
Renvoie la valeur du tag EXIF.
Paramètres :
| Paramètre |
Type |
Explication |
| pTag |
Long |
Identifiant du tag Exif à lire Voir l'énumération EGdipTagName |
Renvoie la valeur du tag dans un Variant.
Renvoie Null si le tag n'existe pas.
XII-B. SetExifData
Ecrit certains tags Exif.
Paramètres :
| Paramètre |
Type |
Explication |
| pTag |
Long |
Identifiant du tag Exif à lire Voir l'énumération EGdipTagName |
| pValue |
Variant |
Valeur du tag à écrire |
Si la valeur passée en paramètre est Null, le tag est supprimé de l'image.
XII-C. GenerateThumbnail
Génère une miniature EXIF intégrée à l'image.
Paramètres :
| Paramètre |
Type |
Explication |
| [pSize] = 200 |
Long |
Taille maxi de la miniature. |
| [pQuality] = -1 |
Long |
Qualité de la miniature (0 à 100) |
XII-D. ImportExifData
Importe les données Exif d'un fichier dans l'image en cours.
Paramètres :
| Paramètre |
Type |
Explication |
| pFile |
String |
Nom du fichier. |
| [pExcludeTags] |
Tableau de Long |
Tableau de tags Exif à exclure |
XIII. Gestion des Gif animés
XIII-A. GifSetFrame
Change l'image courante d'un gif animé.
Paramètres :
| Paramètre |
Type |
Explication |
| pFrame |
Long |
Numéro de l'image |
XIII-B. GifGetFrameCount
Nombre d'images d'un gif animé.
XIII-C. GifGetFrameDelay
Delais d'affichage des images d'un gif animé.
Paramètres :
Renvoie un tableau contenant autant de délais que d'images dans le gif.
XIV. Gestion des textures
Utilisez ensuite les propriétés FillTexture et PenTexture pour choisir la texture à utiliser.
XIV-A. TextureAddFromFile
Ajoute une texture à partir d'un fichier.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de la texture |
| pFile |
String |
Chemin du fichier de la texture |
XIV-B. TextureAddFromImage
Ajoute une texture à partir d'une image.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de la texture |
| pImgName |
String |
Image de la liste d'images contenant la texture |
XIV-C. TextureAddFromControl
Ajoute une texture à partir de l'image integrée a un contrôle.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de la texture |
| pCtrl |
Image |
Contrôle image contenant la texture |
XIV-D. TextureDel
Supprime une texture.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de la texture |
XIV-E. TextureTranslate
Déplace une texture.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de la texture |
| pDx, pDy |
Single |
Deplacements en pixels |
XIV-F. TextureWidth
Largeur une texture.
Renvoie la largeur en pixel.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de la texture |
XIV-G. TextureHeight
Hauteur une texture.
Renvoie la hauteur en pixel.
Paramètres :
| Paramètre |
Type |
Explication |
| pName |
String |
Identifiant de la texture |
XV. Gestion des polices de caractères
Utilisez ensuite les propriétés FillTexture et PenTexture pour choisir la texture à utiliser.
XV-A. FontPrivateAddFromFile
Ajoute une police de caractères privée à partir d'un fichier.
Cette police de caractères ne sera utilisable que dans l'instance de gdiplus où elle a été chargée.
Paramètres :
| Paramètre |
Type |
Explication |
| pFile |
String |
Chemin du fichier de la texture |
XV-B. FontPrivateAddFromByte
Ajoute une police de caractères privée à partir d'une image.
Cette police de caractères ne sera utilisable que dans l'instance de gdiplus où elle a été chargée.
Paramètres :
| Paramètre |
Type |
Explication |
| pByte |
tableau de Byte |
tableau de Byte contenu les données de la police de caractères |
XV-C. FontsPrivateDelete
Supprime toutes les polices de caractères privées.
Pas de paramètre
XV-D. FontsEnumerate
Enumère les polices de caractères.
Paramètres :
| Paramètre |
Type |
Explication |
| pFonts |
Collection |
Collection qui contiendra la liste des polices de caractères. |
XVI. Les fonctions de conversion
XVI-A. ImgToCtrlX et ImgToCtrlY
Converti depuis les coordonnées image vers les coordonnées contrôle
On donne des pixels en entrée, on reçoit des points (Excel) ou Twips (Access) en sortie.
Paramètres :
| Paramètre |
Type |
Explication |
| pX ou pY |
Long |
Abcisse ou ordonnées à convertir |
| pImgCtrl |
Image |
Contrôle Image à utiliser pour la conversion. |
| [pDecalage] = True |
Boolean |
Calcul avec décalage (Position de l'image dans le contrôle)
Définir à Vrai pour convertir une position, à Faux pour convertir une taille. |
XVI-B. CtrlToImgX et CtrlToImgY
Converti depuis les coordonnées contrôle vers les coordonnées image
On donne des points (Excel) ou Twips (Access) en entrée, on reçoit des pixels en sortie.
Paramètres :
| Paramètre |
Type |
Explication |
| pX ou pY |
Long |
Abcisse ou ordonnées à convertir |
| pImgCtrl |
Image |
Contrôle Image à utiliser pour la conversion. |
| [pDecalage] = True |
Boolean |
Calcul avec décalage (Position de l'image dans le contrôle)
Définir à Vrai pour convertir une position, à Faux pour convertir une taille. |
XVI-C. PointsToPixelsX et PointsToPixelsY
Converti les Points (Excel) ou Twips (Access) en Pixels
Paramètres :
| Paramètre |
Type |
Explication |
pPointsX pPointsY |
Long |
Valeur à convertir |
La fonction retourne la valeur convertie en Pixels
XVI-D. PixelToPointsX et PixelToPointsY
Converti les Pixels en Points (Excel) ou en Twips (Access)
Paramètres :
| Paramètre |
Type |
Explication |
pPixelsX pPixelsY |
Long |
Valeur à convertir |
La fonction retourne la valeur convertie en Points (Excel) ou en Twips (Access)
XVII. Les autres fonctions utiles
XVII-A. GetPixel
Renvoie la couleur d'un point
Paramètres :
| Paramètre |
Type |
Explication |
| pX,pY |
Long |
Coordonnées du point |
la fonction renvoie la couleur du point dans un Long.
Exemple :
| Recherche la couleur du pixel sous le curseur de la souris |
Private Sub Image0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)<br/>
Dim lColor As Long
lColor = ClGdip.GetPixel(ClGdip.CtrlToImgX(X, Me.Image0), ClGdip.CtrlToImgY(Y, Me.Image0))
End Sub
|
XVII-B. LongToRGB
Conversion code couleur Long vers RGB
Paramètres :
| Paramètre |
Type |
Explication |
| pLong |
Long |
Valeur de la couleur |
| pRed |
Long |
Composante rouge de la couleur |
| pGreen |
Long |
Composante verte de la couleur |
| pBlue |
Long |
Composante bleue de la couleur |
XVII-C. SetXPTheme
Active ou désactive le thème XP pour les contrôles.
Permet de réduire le scintillement de l'image (pour WinXP/Acc2003)
La fonction s'applique sur toute l'application,
mais seulement sur les contrôles (les barres de menu, barres de titre, ... conservent le thème XP).
Voir la fonction SetDoubleBufferXP pour réduire les scintillements sans désactiver le thème XP.
Utilisez cette fonction même si vous avez déjà désactivé le thème XP dans les options de la base de données.
Paramètres :
| Paramètre |
Type |
Explication |
| [pActive]=True |
Boolean |
Vrai pour activer.
Faux pour désactiver. |
Exemple :
| Réduire les scintillements si la version d'Access est 2003 |
If SysCmd(acSysCmdAccessVer) = "11.0" Then ClGdip.SetXPTheme False
|
XVII-D. SetDoubleBufferXP
Permet de réduire le scintillement de l'image (pour WinXP/Acc2003)
La fonction de double buffer est gourmande en ressource.
Envisagez l'utilisation de la fonction SetXPTheme pour désactiver le thème XP.
Paramètres :
| Paramètre |
Type |
Explication |
| pForm |
Formulaire |
Formulaire dont on veut réduire le scintillement
Privilégiez un formulaire de type indépendant (Fen. Indépendante = Oui).
Si la fonction est appliquée sur un formulaire avec la propriété Fen. Indépendante = Non,
alors le double buffer s'applique sur toute l'application et peut faire scintiller d'autres objets.
|
| [pActive]=True |
Boolean |
Vrai pour activer.
Faux pour désactiver. |
Exemple :
| Réduire les scintillements si la version d'Access est 2003 |
If SysCmd(acSysCmdAccessVer) = "11.0" Then ClGdip.SetDoubleBufferXP Me
|
XVII-E. DragForm
Permet le déplacement du formulaire
Cette fonction permet de déplacer le formulaire même s'il n'a pas de barre de titre.
Exemple :
| Paramètre |
Type |
Explication |
| pForm |
Formulaire |
Formulaire à déplacer |
| Comment déplacer le formulaire en cliquant sur une image |
Private Sub Image0_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ClGdip.DragForm Me
End Sub
|
XVII-F. FontSizeToPixel
Conversion taille police en pixel
Convertit une taille de police de caractères en pixel pour la fonction DrawText.
Paramètres :
| Paramètre |
Type |
Explication |
| pSize |
Long |
Taille de police |
| pCtrlRef |
Control |
Contrôle de référence |
XVII-G. PixelToFontSize
Conversion taille police en points
Convertit une taille de police de caractères de pixels en points pour la fonction DrawText.
Paramètres :
| Paramètre |
Type |
Explication |
| pPixel |
Long |
Taille en pixel |
| pCtrlRef |
Control |
Contrôle de référence |
XVII-H. GetUserFormHandle
Identifiant d'un userform
Pour Excel.
Paramètres :
| Paramètre |
Type |
Explication |
| pForm |
Long |
Objet formulaire |
| pClientArea |
Boolean |
Si Faux, la foncion renvoie l'identifiant du formulaire
Si Vrai, la fonction renvoie l'identifiant de la sous-fenêtre sur laquelle on dessine |
XVII-I. GetClientHandle
Identifiant de la sous-fenêtre sur laquelle on dessine (=section).
Pour Access.
Paramètres :
| Paramètre |
Type |
Explication |
| pImgCtrl |
Image |
Objet image contenu dans la section de laquelle on veut l'identifiant. |
XVII-J. PathIsImage
Test si un chemin est celui d'un fichier image valide.
Paramètres :
| Paramètre |
Type |
Explication |
| pPath |
String |
Chemin du fichier. |
Renvoit Vrai si le chemin est celui d'une image valide.
XVIII. Les propriétés
XVIII-A. ImageWidth et ImageHeight
Taille de l'image en pixels
Type Long en Lecture seule.
C'est la taille de l'image en mémoire.
XVIII-B. ImageFormat
Format de l'image
Type string en Lecture seule.
Formats possibles :
Undefined / MemoryBMP / BMP / EMF / WMF / JPEG / PNG / GIF / TIFF / EXIF / ICON.
Dépend du format du fichier ouvert avec OpenFile.
Si l'image est crée avec CreateBitmap ou modifiée après chargement (hors données Exif), le format
de l'image est MemoryBMP.
XVIII-C. RefControl
Contrôle de référence pour coordonnées passées en points/twips
Type Control en Lecture/Ecriture.
Si RefControl est défini, les fonctions acceptent des
coordonnées passées en Twips (pour Access) ou en Points (Pour Excel).
Pour annuler et repasser en pixels, affectez Nothing à cette propriété.
Exemple :
| Affichage d'un pixel rouge à l'emplacement de la souris |
clGdip.DrawPixel clGdip.CtrlToImgX(X, Me.Image0), clGdip.CtrlToImgY(Y, Me.Image0), vbRed
clGdip.RefControl = Me.Image0
clGdip.DrawPixel X, Y, vbRed
clGdip.RefControl = Nothing
|
XVIII-D. PenAlignMode
Alignement du crayon
Type Long en Lecture/Ecriture.
Voir énumération EGdipPenAlignMode
S'applique aux fonctions DrawRectangle, DrawLine, DrawEllipse et DrawPolygon.
XVIII-E. FastRepaintReplace
Mode remplace pour FastRepaint
Type Boolean en Lecture/Ecriture.
Si FastRepaintReplace est vrai, FastRepaint remplace les pixels.
Sinon ils sont dessinés par dessus l'image déjà affichée.
XVIII-F. WrapX et WrapY
Décalage d'une image avec enroulement.
Type Long en Lecture/Ecriture.
S'applique aux fonctions FastRepaint, DrawImage et DrawBitmap.
XVIII-G. DrawSmooth
Dessin avec lissage.
Type Booléen en Lecture/Ecriture.
S'applique aux fonctions de dessin de lignes, polygones et ellipse, ainsi qu'à l'encadrement de région (FrameRegion).
XVIII-H. DrawWithoutTransparency
Dessin des images sans transparence (plus rapide si pas besoin de transparence).
Type Booléen en Lecture/Ecriture.
S'applique aux fonctions de dessin de lignes, polygones et ellipses.
XVIII-I. FillTexture
Texture de remplissage.
Type String en Lecture/Ecriture.
S'applique aux fonctions de dessin de textes, rectangles, polygones et ellipses, ainsi qu'aux fonctions de remplissage (FillColor et FillRegion) .
XVIII-J. PenTexture
Texture de crayon pour les lignes.
Type String en Lecture/Ecriture.
S'applique aux fonctions de dessin de rectangles, polygones et ellipses, ainsi qu'à l'encadrement de région (FrameRegion).
XVIII-K. IconBackColor
Couleur de fond des icones.
Type Long en Lecture/Ecriture.
S'applique aux fonctions de chargement d'image : OpenFile et ImageListAdd.
XVIII-L. AntialisingLevel
Niveau d'antialiasing.
Type Long en Lecture/Ecriture.
Voir énumération EGdipAntialisingLevel.
XIX. Conclusion
La librairie gdiplus.dll offre de nombreuses possibilités graphiques que l'on peut exploiter dans Access.
Merci à l'équipe Office de developpez.com pour ses relectures, commentaires et encouragements!
XX. Les téléchargements


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 oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©
2008 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'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts. Droits de diffusion permanents accordés à developpez LLC.
Cette page est déposée à la
SACD.