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

Auteur

Thierry GASPERMENT

Module de classe VBA pour faciliter l'utilisation de la librairie graphique gdiplus.dll (GDI+)
Version actuelle : v2.1

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

- Auteur : Thierry GASPERMENT

- Parution : 9 août 2013

- Mise à jour : 15 octobre 2013

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2011 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.

Sommaire

- I. Introduction

- II. Remarques préalables

- II-A. Remarques

- II-B. Pré-requis

- II-C. Compatibilité avec Excel, Word et PowerPoint

- II-D. Long ou Single ?

- II-E. Image principale et images secondaires

- III. Création et de sauvegarde de l'image principale

- III-A. LoadFile

- III-B. CloseImage

- III-C. CreateBitmap

- III-D. CreateBitmapForControl

- III-E. CreateBitmapForImg

- III-F. CreateBitmapForDC

- III-G. CreateBitmapForHwnd

- III-H. SaveFile

- III-I. SaveTransformFile

- III-J. SavePixels

- III-K. LoadPixels

- III-L. LoadBitmap

- III-M. LoadPictureMask

- III-N. SaveBitmap

- III-O. LoadArray

- III-P. SaveArray

- III-Q. LoadControl

- III-R. SaveIPictureDisp

- III-S. ConvertForImg

- III-T. IconBackColor

- III-U. LoadAndClone

- IV. Restitution de l'image principale à l'écran

- IV-A. Repaint

- IV-B. RepaintNoFormRepaint

- IV-C. RepaintFast

- IV-D. RepaintFastSetCorrection

- IV-E. RepaintFastSetClipControl

- IV-F. RepaintFastSetClipRectangle

- IV-G. RepaintFastSetClipRegion

- IV-H. RepaintFastResetClip

- IV-I. RepaintFastTransparency

- IV-J. RepaintFastResetCalc

- V. Modification de l'image principale

- V-A. Clear

- V-B. FillColor

- V-C. ReplaceColor

- V-D. ApplyColorMatrix

- V-E. Resize

- V-F. ScaleI

- V-G. Crop

- V-H. Rotate

- V-I. RotateFlip

- VI. Dessin (formes, textes, images)

- VI-A. DrawPixel

- VI-B. DrawLine

- VI-C. DrawRectangle

- VI-D. DrawRoundRectangle

- VI-E. DrawEllipse

- VI-F. DrawPolygon

- VI-G. DrawCurve

- VI-H. DrawCardinal

- VI-I. DrawSVG

- VI-J. DrawText

- VI-K. TextCreateRegionOutline

- VI-L. DrawImg

- VI-M. DrawBitmap

- VI-N. DrawControl

- VI-O. DrawTexture

- VI-P. PenAlignMode

- VI-Q. SmoothingMode

- VI-R. DrawDashCustom

- VI-S. LineStart

- VI-T. LineEnd

- VI-U. LineJoin

- VI-V. LineJoinMiterLimit

- VI-W. LineArrowLength

- VI-X. LineArrowFill

- VII. Liste d'images secondaires

- VII-A. ImgNew

- VII-B. ImgNewForImage

- VII-C. ImgNewTemp

- VII-D. Img

- VII-E. ImgExists

- VII-F. Imgs

- VII-G. ImgDelete

- VII-H. ImgsDelete

- VII-I. ImgClone

- VII-J. ImgDraw

- VII-K. ImgName

- VII-L. Parent

- VIII. Transformations

- VIII-A. WorldRotate

- VIII-B. WorldTranslate

- VIII-C. WorldScale

- VIII-D. WorldReset

- VIII-E. WorldPush

- VIII-F. WorldPop

- VIII-G. WorldView

- VIII-H. WorldTransformPoint

- VIII-I. WorldTransformVector

- IX. Régions / collisions

- IX-A. RegionAppend

- IX-B. CreateRegionLine

- IX-C. CreateRegionEllipse

- IX-D. CreateRegionPolygon

- IX-E. CreateRegionRect

- IX-F. CreateRegionRoundRect

- IX-G. CreateRegionCurve

- IX-H. CreateRegionCardinal

- IX-I. CreateRegionSVG

- IX-J. CreateRegionFromColor

- IX-K. Regions

- IX-L. RegionDelete

- IX-M. RegionsDelete

- IX-N. RegionFrame

- IX-O. RegionFill

- IX-P. RegionHatch

- IX-Q. FillMode

- IX-R. GetRegionXY

- IX-S. GetRegionXYLine

- IX-T. PointInRegion

- IX-U. PointInRegionLine

- IX-V. RegionGetRect

- IX-W. RegionGetCenter

- IX-X. RegionExists

- IX-Y. RegionIsEmpty

- IX-Z. RegionIsPath

- IX-AA. RegionCombine

- IX-AB. RegionScale

- IX-AC. RegionTranslate

- IX-AD. RegionRotate

- IX-AE. RegionTransform

- IX-AF. RegionsIntersect

- IX-AG. RegionClone

- IX-AH. SetFormRegion

- IX-AI. ResetFormRegion

- X. Sauvegarde de l'image principale en mémoire

- X-A. ImageKeep

- X-B. ImageReset

- X-C. ImageExists

- X-D. ImageDelete

- X-E. ImagesDelete

- X-F. ImageGetBitmap

- XI. Données Exif

- XI-A. GetExifData

- XI-B. SetExifData

- XI-C. GenerateThumbnail

- XI-D. ImportExifData

- XII. Gif animés

- XII-A. GifSetFrame

- XII-B. GifGetFrameCount

- XII-C. GifGetFrameDelay

- XIII. Textures

- XIII-A. TextureAddFromFile

- XIII-B. TextureAddFromImg

- XIII-C. TextureAddFromControl

- XIII-D. TextureDelete

- XIII-E. TextureTranslate

- XIII-F. TextureWidth

- XIII-G. TextureHeight

- XIII-H. FillTexture

- XIII-I. PenTexture

- XIV. Polices de caractères

- XIV-A. FontPrivateAddFromFile

- XIV-B. FontPrivateAddFromByte

- XIV-C. FontsPrivateDelete

- XIV-D. FontsEnumerate

- XV. Conversion de coordonnées

- XV-A. ImgToCtrlX et ImgToCtrlY

- XV-B. CtrlToImgX et CtrlToImgY

- XV-C. PointsToPixelsX et PointsToPixelsY

- XV-D. PixelsToPointsX et PixelsToPointsY

- XVI. Autres fonctions diverses

- XVI-A. GetPixel

- XVI-B. LongToRGB

- XVI-C. SetXPTheme

- XVI-D. SetDoubleBufferXP

- XVI-E. DragForm

- XVI-F. FontSizeToPixel

- XVI-G. PixelToFontSize

- XVI-H. GetUserFormHandle

- XVI-I. GetClientHandle

- XVI-J. PathIsImage

- XVI-K. GetControlPos

- XVI-L. ApplicationPath

- XVII. Propriétés diverses

- XVII-A. ImageWidth et ImageHeight

- XVII-B. ImageFormat

- XVII-C. ImageFormatText

- XVII-D. RefControl

- XVII-E. WrapX et WrapY

- XVII-F. TransparencyMode

- XVII-G. AntialisingLevel

- XVII-H. LastTextBottom et LastTextRight

- XVII-I. MaxTextSize, MinTextSize et LastTextSize

- XVII-J. DrawClipRegion

- XVII-K. DrawClipRectangle

- XVII-L. DpiX et DpiY

- XVIII. Conclusion

- XIX. 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 les formats Jpeg/Png/Gif 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 déplace une aiguille avec la souris, l'heure change.

II - Remarques préalables

II-A - Remarques

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

- l'origine (0,0) d'une image gdi+ est en haut à gauche ;

- la classe est développée sur Access2007 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 oGdi 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 retournent False (Faux) en cas d'échec (ou Vrai (True) 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 à partir de XP.

Si besoin, la dernière version de la librairie est en téléchargement :
Lien vers la libraire en téléchargement sur Microsoft.com
Le fichier gdiplus.dll doit alors être placé dans le répertoire de l'application.

Le module de classe suivant doit être importé dans le projet VBA (menu => ) :
Télécharger le module de classe

II-C - Compatibilité avec Excel, Word et PowerPoint

Par défaut, le dessin se fait sur un formulaire Access.

Pour utiliser la classe ClGdiplus avec Excel, Word ou PowerPoint, recherchez la constante de compilation AppName :

#Const AppName = "A"

Et remplacez la valeur A par l'initiale de l'application hôte :

- A pour Access ;

- W pour Word ;

- E pour Excel ;

- P pour Powerpoint.

Pour Word, Excel et Powerpoint, le dessin se fait alors sur un UserForm.
La référence à Microsoft Forms doit être activée.
Elle est activée automatiquement à la création d'un UserForm.

II-D - Long ou Single ?

Par défaut, les coordonnées sont de type Long (entiers long).

Pour plus de précision (mais des temps de traitements un peu plus longs), il est possible d'utiliser des coordonnées de type Single (virgule flottante) en modifiant la constante de compilation UseSingle :

#Const UseSingle = True

II-E - Image principale et images secondaires

Un objet de type clGdiplus correspond à une image.
Toute méthode ou propriété (transformation, dessin...) de cet objet s'applique à cette image.
C'est ce que j'appelle l'image principale.

Il est possible de créer des sous-images à l'aide des fonctions Img*.
C'est ce que j'appelle les images secondaires.
Ces images sont également des objets de type clGdiplus et sont "attachées" à l'image principale.
Elle peuvent être modifiées indépendamment de l'image principale et dessinées sur cette dernière par exemple.
Lors de la suppression d'une image principale, les images secondaires qui lui sont liées sont supprimées.

III - Création et de sauvegarde de l'image principale

III-A - LoadFile

Ouvre un fichier.

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

La fonction retourne Vrai si le fichier a été ouvert avec succès.

Paramètres :

Paramètre

Type

Explication

pFile

String

Chemin complet du fichier image

[pThumbNail]=False

Boolean

Mettre à True pour ouvrir la miniature Exif

[pIcon]=GdipNoIcon

EGdipIconType

- GdipNoIcon = Charge le fichier normalement ;
- GdipSmallIcon = Charge la petite icone associée au fichier ;
- GdipLargeIcon = Charge la grande icone associée au fichier.
L'icône est celle de l'application associée au type du fichier chargé, c'est-à-dire l'icône que l'on voit dans l'explorateur de ficheir Windows.

III-B - CloseImage

Ferme l'image.

L'image peut être un fichier chargé avec OpenFile, un bitmap créé avec CreateBitmap, ...
Pensez à refermer l'image lorsqu'elle n'est plus utilisée pour libérer de la mémoire.

Lorsque l'objet clGdiplus est libéré, l'image est automatiquement libérée.

III-C - CreateBitmap

Création d'une image vierge.

L'image est créée en mémoire.
Elle est de format Bitmap et 32bpp (donc avec transparence).

Paramètres :

Paramètre

Type

Explication

pWidth

Long

Largeur de l'image en pixels

pHeight

Long

Hauteur de l'image en pixels

[pResolution] = 96

Single

Resolution de l'image en points par pouce (96 par défaut)

III-D - CreateBitmapForControl

Création d'une image vierge.

Elle a la taille du contrôle ou du formulaire donné en paramètre.
Le format de l'image (résolution, profondeur de pixel...) est déterminé par le formulaire pour une rapidité de dessin accrue.
L'image est créée en mémoire.

Paramètres :

Paramètre

Type

Explication

pObject

Object

Contrôle ou formulaire qui détermine la taille et le format de l'image.

III-E - CreateBitmapForImg

Création d'une image vierge.

Le format de l'image (résolution, profondeur de pixel...) est déterminé par l'image (objet clGdiplus) donnée en paramètre.
L'image sera dessinée plus rapidement sur une image de même format.
L'image est créée en mémoire.

Paramètres :

Paramètre

Type

Explication

pImg

Variant

Image qui détermine le format de la nouvelle image.
Object clGdiplus ou nom d'une image secondaire

pWidth

Long

Largeur de l'image en pixels

pHeight

Long

Hauteur de l'image en pixels

III-F - CreateBitmapForDC

Création d'une image vierge.

Le format de l'image (résolution, profondeur de pixel...) est déterminé par le contexte d'affichage GDI donné en paramètre.
L'image sera dessinée plus rapidement sur un contexte d'affichage de même format.
L'image est créée en mémoire.

Paramètres :

Paramètre

Type

Explication

pDC

Long ou LongLong

Contexte d'affichage qui détermine le format de la nouvelle image.

pWidth

Long

Largeur de l'image en pixels

pHeight

Long

Hauteur de l'image en pixels

III-G - CreateBitmapForHwnd

Création d'une image vierge.

Le format de l'image (résolution, profondeur de pixel...) est déterminé par la fenêtre donnée en paramètre.
L'image sera dessinée plus rapidement sur une fenêtre de même format.
L'image est créée en mémoire.

Paramètres :

Paramètre

Type

Explication

pHwnd

Long ou LongLong

Fenêtre qui détermine le format de la nouvelle image.

pWidth

Long

Largeur de l'image en pixels

pHeight

Long

Hauteur de l'image en pixels

III-H - SaveFile

Sauvegarde l'image dans un fichier.

La fonction retourne 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, sauf en définissant la propriété LoadAndClone.

[pFormat]

EGdipImageFormatSave

Format du fichier : JPG,GIF,BMP,PNG,TIFF,EMF.
Par défaut le format est déterminé en fonction de l'extension du fichier.

[pQuality]=-1

Integer

Qualité pour le format JPG (0-100)
Ne spécifiez pas ce paramètre pour garder la qualité de l'image d'origine.

Ou type d'EMF pour le format EMF
1 = EMF(par défaut); 2 = EMF+; 3=EMF Dual.

III-I - SaveTransformFile

Sauvegarde l'image dans un fichier avec transformation. L'image n'est pas altérée par une recompression si elle est au format Jpeg et si ses dimensions sont toutes deux multiples de 16.

Paramètres :

Paramètre

Type

Explication

pFile

String

Chemin du fichier de sauvegarde.
Il n'est pas possible d'écraser le fichier courant, sauf en définissant la propriété LoadAndClone.

pTransformation

EGdipJpegTransform

Transformation à appliquer

Exemple :

Rotation d'une image sans perte de qualité

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

III-J - SavePixels

Retourne un tableau de pixels avec les couleurs ARGB

Paramètres :

Paramètre

Type

Explication

pPixels

Tableau de Byte

Tableau de points ARGB

La fonction retourne 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 = oGdi.SavePixels
' Boucle sur les pixels
For lCptX =  LBound(lPixels(), 2) To UBound(lPixels(), 2)
For lCptY =  LBound(lPixels(), 3) 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

III-K - LoadPixels

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

L'image précédente est conservée et seuls les pixels d'indices demandés sont modifiés.
Pour créer une nouvelle image, fermer d'abord la précédente avec CloseImage.

Paramètres :

Paramètre

Type

Explication

pPixels

Tableau de Byte

Tableau de points ARGB

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 = oGdi.SavePixels
' On boucle sur les pixels
For lCptX = LBound(lPixels(), 2) To UBound(lPixels(), 2)
For lCptY = LBound(lPixels(), 3) 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
oGdi.LoadPixels lPixels

III-L - LoadBitmap

Crée l'image à partir d'un bitmap Gdiplus.

Voir SaveBitmap pour un exemple d'utilisation.

Paramètres :

Paramètre

Type

Explication

pBitmap

Long ou LongLong

Identifiant d'un bitmap GdiPlus

[pClone] = Vrai

Boolean

Si Vrai, clone le bitmap source.
Il faut donc ensuite supprimer ce bitmap source si nécessaire.

III-M - LoadPictureMask

Crée l'image à partir d'un bitmap et d'un mask gdi32

Paramètres :

Paramètre

Type

Explication

pPicture

Long ou LongLong

Identifiant d'un bitmap gdi32

[pMask] = 0

Long ou LongLong

Identifiant d'un masque gdi32

[pBackColor] = vbWhite

Long

Couleur de fond.

[pBackAlpha] = 0

Long

Transparence du fond, entre 0 et 255.

[pDelete] = True

Boolean

Supprime ensuite les bitmaps si True.

III-N - SaveBitmap

Sauvegarde l'image dans un bitmap Gdiplus

Paramètres :

Paramètre

Type

Explication

[pClone] = Faux

Boolean

Si Vrai, clone le bitmap.

La fonction retourne un bitmap Gdiplus.

Exemple :

Affecter l'image d'une classe à une autre

' On ne clone pas l'image lors de l'appel à SaveBitmap.
' Par compte on clone l'image lors de l'appel à LoadBitmap.
' Ainsi on obtient dans la classe oGdiOut un clone de l'image issue de oGdiIn
' 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 cloné 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 = oGdiOut.LoadBitmap(oGdiIn.SaveBitmap(False), True)

III-O - LoadArray

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.
Eequivalent au contenu d'un fichier image (bmp, jpg, gif, ...)

[pAttachment]=False

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

' Timages est le nom de la table
' data est le champ pièce-jointe
' id est un champ texte identifiant de l'image
oGdi.LoadArray DLookup("data.filedata", "Timages", "id=""btnGIF"""), True

III-P - SaveArray

Sauvegarde l'image dans un tableau de byte

Voir l'application pour un exemple d'utilisation.

Paramètres :

Paramètre

Type

Explication

pArray

Tableau de Byte

Données de l'image.

[pFormat]=gdipFormatSaveArrayJPEG

EGdipImageFormatSaveArray

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 au format demandé.

III-Q - LoadControl

Création de l'image à partir de l'image contenue dans un contrôle (ou formulaire ou UserForm)

Paramètres :

Paramètre

Type

Explication

pCtrl

Object

Contrôle, formulaire ou UserForm contenant une image.

III-R - SaveIPictureDisp

Renvoie l'image dans un objet IPictureDisp

Cet objet peut être utilisé pour une image du ruban par exemple.

III-S - ConvertForImg

Converti l'image dans le même format qu'une autre image.

Le dessin d'une image sur l'autre sera alors plus rapide.

Paramètres :

Paramètre

Type

Explication

pImg

Variant

Image de référence.
Object clGdiplus ou nom d'une image secondaire.

III-T - IconBackColor

Couleur de fond des icones.

Type Long en lecture / écriture.

S'applique à la fonction de chargement d'image : LoadFile.

III-U - LoadAndClone

Chargement d'un fichier sans verrouillage.

Type Boolean en lecture / écriture.

Au chargement d'une image avec LoadFile, si LoadAndClone est Vrai alors l'image est clonée en mémoire afin de libérer le fichier.

Pour les images de liste d'images (crées avec les fonctions ImgNew*), cette propriété est Vrai par défaut.

IV - Restitution de l'image principale à l'écran

IV-A - Repaint

Injecte l'image dans un contrôle ou un formulaire.

Paramètres :

Paramètre

Type

Explication

pObject

Object

Contrôle ou formulaire dans lequel est injectée l'image

[pResizeBefore]=False

Boolean

Si Vrai, redimensionne l'image au préalable.

[pResizeAntialise]=False

Boolean

Anti-aliasing lors du redimensionnement.

[pUseEMF]=False

Boolean

Pour ACCESS uniquement : utilisation du type d'image EMF.
A tester si besoin pour améliorer la qualité de l'image dessinée.

[pBackgroundColor]

Long

Pour un UserForm uniquement : défini la couleur de remplacement des zones transparente.

Affichage de l'image dans le contrôle Image0 avec redimensionnement et lissage

oGdi.Repaint Me.Image0, True, True

IV-B - RepaintNoFormRepaint

Injecte l'image dans un contrôle ou formulaire, mais ne la dessine que temporairement.

Cette fonction peut être utilisée pour réduire les scintillements à 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 RepaintFastSetCorrection et/ou en retirant les bordures de l'image.

Paramètres :

Paramètre

Type

Explication

pObject

Object

Contrôle ou formulaire 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 tester si besoin pour améliorer la qualité de l'image dessinée.

[pBackgroundColor]

Long

Pour un UserForm uniquement : défini la couleur de remplacement des zones transparente.

IV-C - RepaintFast

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 RepaintFastSetCorrection et/ou en retirant les bordures de l'image.

Paramètres :

Paramètre

Type

Explication

pObject

Object

Contrôle ou formulaire 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 ou LongLong

Handle d'un device contexte si connu.

[phWnd] = 0

Long ou LongLong

Handle d'une fenêtre si connu.

IV-D - RepaintFastSetCorrection

Corrections pour la fonction RepaintFast.

*Dest pour correction sur le formulaire.
*Src pour correction sur l'image dessinée.

Paramètres :

Paramètre

Type

Explication

pLeftDest, pLeftSrc

Long ou Single

Correction à gauche

pTopDest, pTopSrc

Long ou Single

Correction à droite

pWidthDest, pWidthSrc

Long ou Single

Correction de largeur

pHeightDest, pHeightSrc

Long ou Single

Correction de hauteur

IV-E - RepaintFastSetClipControl

Définit l'emplacement à redessiner avec la fonction RepaintFast.

Permet de placer des contrôles sur l'images et de ne pas dessiner par dessus si on utilise la fonction RepaintFast.
Il est possible de combiner plusieurs contrôles en appelant plusieurs fois la fonction.

Paramètres :

Paramètre

Type

Explication

pCtrl

Contrôle

Contrôle dont l'emplacement est à inclure ou exclure

[pInclude] = True

Boolean

Si Vrai, le contrôle spécifié délimite un rectangle qui sera redessiné à l'appel de la fonction RepaintFast.
Si Faux, le contrôle spécifié délimite un rectangle qui ne sera pas redessiné.

[pCorrectLeft] = 0

Long ou Single

Correction à gauche en pixels

[pCorrectTop] = 0

Long ou Single

Correction en haut en pixels

[pCorrectRight] = 0

Long ou Single

Correction à droite en pixels

[pCorrectBottom] = 0

Long ou Single

Correction en bas en pixels

IV-F - RepaintFastSetClipRectangle

Définit l'emplacement à redessiner avec la fonction RepaintFast.

Permet d'accélérer le dessin en ne dessinant qu'une portion de l'image.
Il est possible de combiner plusieurs rectangles en appelant plusieurs fois la fonction.

Paramètres :

Paramètre

Type

Explication

pX1, pY1, pX2, pY2

Long ou Single

Coordonnées du rectangle à dessiner.
En pixels par rapport à l'image principale.

[pInclude] = True

Boolean

Si Vrai, le rectangle sera redessiné à l'appel de la fonction RepaintFast.
Si Faux, le rectangle ne sera pas redessiné.

[pCorrectLeft] = 0

Long ou Single

Correction à gauche en pixels

[pCorrectTop] = 0

Long ou Single

Correction en haut en pixels

[pCorrectRight] = 0

Long ou Single

Correction à droite en pixels

[pCorrectBottom] = 0

Long ou Single

Correction en bas en pixels

IV-G - RepaintFastSetClipRegion

Définit le rectangle entourant une région comme l'emplacement à redessiner avec la fonction RepaintFast.

Permet d'accélérer le dessin en ne dessinant qu'une portion de l'image.
Il est possible de combiner plusieurs rectangles en appelant plusieurs fois la fonction.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région à dessiner.

[pInclude] = True

Boolean

Si Vrai, le rectangle sera redessiné à l'appel de la fonction RepaintFast.
Si Faux, le rectangle ne sera pas redessiné.

[pCorrectLeft] = 0

Long ou Single

Correction à gauche en pixels

[pCorrectTop] = 0

Long ou Single

Correction en haut en pixels

[pCorrectRight] = 0

Long ou Single

Correction à droite en pixels

[pCorrectBottom] = 0

Long ou Single

Correction en bas en pixels

IV-H - RepaintFastResetClip

Réinitialise l'emplacement à redessiner avec la fonction RepaintFast.

Après l'appel de cette fonction, l'image entière est à nouveau dessinée.

IV-I - RepaintFastTransparency

Transparence pour RepaintFast

Type Boolean en lecture / écriture.
Faux par défaut.

Si RepaintFastTransparency est Faux, RepaintFast remplace les pixels.
Sinon ils sont dessinés par dessus l'image déjà affichée.

IV-J - RepaintFastResetCalc

Réinitialise les calculs pour RepaintFast.

Type Boolean en lecture / écriture.
Faux par défaut.

La fonction RepaintFast conserve les calculs de positionnement pour optimiser le temps d'affichage.
Exécuter RepaintFastResetCalc réinitialise ces calculs dans la cas par exemple d'une modification de taille de contrôle ou de positionnement / alignement de l'image dans le contrôle.

V - Modification de l'image principale

V-A - Clear

Réinitialise l'image principale d'une couleur unie.

Paramètres :

Paramètre

Type

Explication

[pColor] = vbBlack

Long

Couleur de remplissage

[pAlpha] = 255

Integer

Transparence (0 --> 255)

V-B - FillColor

Rempli l'image principale 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]
[pY1]
[pX2]
[pY2]

Long ou Single

Coordonnées du rectangle à remplir, ou toute l'image.

[pAlpha] = 255

Integer

Transparence (0 --> 255)

Exemple :

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

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

V-C - 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, tous les points de transparence 0 à 255 sont traités

[pNewAlpha] = -1

Long

Nouvelle transparence (0 --> 255)Si paramètre omis ou égal à -1, la transparence n'est pas modifiée

[pX1]
[pY1]
[pX2]
[pY2]

Long ou Single

Coordonnées du rectangle à traiter ou toute l'image si non précisé.

Exemple :

Remplace le blanc par la couleur de fond d'un formulaire Access

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

V-D - 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 à 4ème valeur: Multiplicateurs des composantes rouge, vert, bleu et alpha
5ème valeur : Valeur à ajouter
Les valeurs doivents être comprises entre -1 et 1

[pX1]
[pY1]
[pX2]
[pY2]

Long ou Single

Coordonnées du rectangle à traiter, ou toute l'image.

Exemple :

Appliquer un filtre noir et blanc

oGdi.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)

V-E - Resize

Redimensionne l'image principale.

Si un des paramètres de dimension (pWidth ou pHeight) est omis, il est calculé en fonction de l'autre dimension en conservant le ratio de l'image.

Paramètres :

Paramètre

Type

Explication

[pWidth]=0

Long

Nouvelle largeur

[pHeight]=0

Long

Nouvelle hauteur

[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 = oGdi.Resize(oGdi.ImageWidth / 10, oGdi.ImageHeight / 10)

V-F - ScaleI

Redimensionne l'image.

Les paramètres sont des multiplicateurs.

Paramètres :

Paramètre

Type

Explication

[psX]=1

Single

Facteur de redimensionnement pour la largeur

[psY]=0

Long

Facteur de redimensionnement pour la hauteur

[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 = oGdi.ScaleI(0.1, 0.1)

V-G - Crop

Découpe l'image.

Paramètres :

Paramètre

Type

Explication

[pX1]
[pY1]
[pX2]
[pY2]

Long ou Single

Coordonnées du rectangle à conserver.

[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 = oGdi.Crop(0, 0, oGdi.ImageWidth / 2, oGdi.ImageHeight / 2)

V-H - Rotate

Rotation de l'image principale.

Paramètres :

Paramètre

Type

Explication

pAngle

Single

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 = oGdi.Rotate(30)

V-I - RotateFlip

Rotation / Miroir de l'image.

Paramètres :

Paramètre

Type

Explication

pType

EGdipRotateFlip

Type de transformation

[pKeepExifData] = Faux

Boolean

Si Vrai alors les données Exif sont réinjectées dans l'image après la rotation et/ou le miroir

Exemple :

Retourne l'image horizontalement

lReturn = oGdi.RotateFlip(RotateNoneFlipX)

VI - Dessin (formes, textes, images)

Le dessin tient compte des transformations définies par les fonctions World*.

VI-A - DrawPixel

Dessine un pixel.

Paramètres :

Paramètre

Type

Explication

pX

Long ou Single

Position horizontale du pixel

pY ou Single

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 de l'image

lReturn = oGdi.DrawPixel(oGdi.ImageWidth / 2,oGdi.ImageHeight / 2, vbRed)

VI-B - DrawLine

Dessine une ligne.

Paramètres :

Paramètre

Type

Explication

pX1,pY1

Long ou Single

Position du premier point

pX2,pY2

Long ou Single

Position du deuxième point

[pPenColor] = vbBlack

Long

Couleur de la ligne

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

[pDash] = GdipDashSOLID

EGdipDashStyle

Style des pointillés

[pAlpha] = 255

Integer

Transparence du trait (0 --> 255)

[pRegion] = ""

String

Nom de la région à créer pour cette ligne.

Exemple :

Dessiner une ligne bleue de 4 pixels de large qui traverse l'image en diagonal

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

VI-C - DrawRectangle

Dessine un rectangle.

Paramètres :

Paramètre

Type

Explication

pX1,pY1,pX2,pY2

Long ou Single

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 ou Single

Epaisseur de la ligne

[pDash] = GdipDashSOLID

EGdipDashStyle

Style des pointillés

[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 de coordonnées aléatoires

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

VI-D - DrawRoundRectangle

Dessine un rectangle avec coins arrondis.

Paramètres :

Paramètre

Type

Explication

pX1 ,pY1 ,pX2 ,pY2

Long ou Single

Coordonnées du rectangle

pX3 ,pY3

Long ou Single

Taille de l'ellipse utilisée pour les coins

[pBackColor] = -1

Long

Couleur de remplissage
Laisser -1 pour un rectangle transparent.

[pPenColor] = vbBlack

Long

Couleur de la ligne

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

[pDash] = GdipDashSOLID

EGdipDashStyle

Style des pointillés

[pAlpha] = 255

Integer

Transparence du trait (0 --> 255)

[pRegion] = ""

String

Nom de la région à créer avec les mêmes coordonnées

VI-E - DrawEllipse

Dessine une ellipse.

Paramètres :

Paramètre

Type

Explication

pX1,pY1,pX2,pY2

Long ou Single

Position de l'ellipse

[pType] = TypeEllipseRectangle

EGdipTypeEllipse

Type de positionnement
Si pType = TypeEllipseRectangle = 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 = TypeEllipseCenter = 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 ou Single

Epaisseur de la ligne

[pDash] = GdipDashSOLID

EGdipDashStyle

Style des pointillés

[pAlpha] = 255

Integer

Transparence du trait (0 --> 255)

[pStartAngle] = Missing

Variant/Single

Angle de démarrage d'un arc en degré

[pSweepAngle] = Missing

Variant/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 = oGdi.DrawEllipse _
(oGdi.ImageWidth / 2, oGdi.ImageHeight / 2, _
oGdi.ImageWidth / 5, oGdi.ImageHeight / 5, 1, _
vbGreen, vbRed, 2)

VI-F - DrawPolygon

Dessine un polygone.

Paramètres :

Paramètre

Type

Explication

pPoints

Variant

Tableau de points (Long ou Single) formant le polygone : Array(X1,Y1,X2,Y2,X3,Y3,...)

[pBackColor] = -1

Long

Couleur de remplissage
Laisser -1 pour un polygone transparent.

[pPenColor] = vbBlack

Long

Couleur de la ligne

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

[pDash] = GdipDashSOLID

EGdipDashStyle

Style des pointillés

[pAlpha] = 255

Integer

Transparence du trait (0 --> 255)

[pRegion] = ""

String

Nom de la région à créer avec les mêmes coordonnées

VI-G - DrawCurve

Dessine une ou plusieurs courbes de Bézier.

Paramètres :

Paramètre

Type

Explication

pPoints

Variant

Tableau de points (Long ou Single) formant la courbe: Array(X1,Y1,X2,Y2,X3,Y3,...).
Necessite 1 point de depart + 3 points par courbe.

[pBackColor] = -1

Long

Couleur de remplissage
Laisser -1 pour une courbe transparente.

[pPenColor] = vbBlack

Long

Couleur de la ligne

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

[pDash] = GdipDashSOLID

EGdipDashStyle

Style des pointillés

[pAlpha] = 255

Integer

Transparence du trait (0 --> 255)

[pRegion] = ""

String

Nom de la région à créer avec les mêmes coordonnées

VI-H - DrawCardinal

Dessine une ou plusieurs courbes cardinales.

Paramètres :

Paramètre

Type

Explication

pPoints

Variant

Tableau de points (Long ou Single) formant la courbe: Array(X1,Y1,X2,Y2,X3,Y3,...)

[pTension] = 0.5

single

Tension de la courbe

[pBackColor] = -1

Long

Couleur de remplissage
Laisser -1 pour une courbe transparente.

[pPenColor] = vbBlack

Long

Couleur de la ligne

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

[pDash] = GdipDashSOLID

EGdipDashStyle

Style des pointillés

[pAlpha] = 255

Integer

Transparence du trait (0 --> 255)

[pRegion] = ""

String

Nom de la région à créer avec les mêmes coordonnées

VI-I - DrawSVG

Dessine un chemin SVG.
Attention : toute la norme SVG n'est pas implémentée.

M : point de départ.
L : ligne.
V : ligne verticale.
H : ligne horizontale.
C : courbe de bézier (1 point de contrôle).
Q : courbe de bézier quadratique (2 points de contrôle).
A : arc.
z : ferme le chemin.

Utilisez des majuscules pour des coordonnées absolues, et des minuscules pour des coordonnées relatives.

Des virgules ou des espaces doivent séparer chaque information.

Paramètres :

Paramètre

Type

Explication

pPath

String

Chemin au format SVG.

[pBackColor] = -1

Long

Couleur de remplissage
Laisser -1 pour une courbe transparente.

[pPenColor] = vbBlack

Long

Couleur de la ligne

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

[pDash] = GdipDashSOLID

EGdipDashStyle

Style des pointillés

[pAlpha] = 255

Integer

Transparence du trait (0 --> 255)

[pRegion] = ""

String

Nom de la région à créer avec les mêmes coordonnées

Exemple :

Dessine un chemin SVG

lReturn = oGdi.DrawSVG("M 20 20 h 50 L 100 100 Q 120 120 100 150 70 180 z")

VI-J - DrawText

Dessine du texte.

Paramètres :

Paramètre

Type

Explication

pText

String

Texte à écrire
Peut contenir des retours à la ligne (vbCrLf)

pSize

Long ou Single

Taille du texte en pixel

[pFontName]=""

String

Nom de la police (Arial, ...)
Si non précisé, utilise la police système par défaut.

[pX1]= 0
[pY1]= 0
[pX2]
[pY2]

Long ou Single

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] = HorzAlignCenter

EGdipHorzAlign

Alignement horizontal
- HorzAlignLeft = 0 : Gauche
- HorzAlignCenter = 1 : Centre
- HorzAlignRight = 2 : Droite

[pAlignVert] = VertAlignCenter

EGdipVertAlign

Alignement vertical
- VertAlignTop = 0 : Haut
- VertAlignCenter = 1 : Centre
- VertAlignBottom = 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

[pOnlyGetSize] = Faux

Boolean

Si vrai, n'écrit pas le texte sur l'image et retourne la taille du texte dans pX1,pY1,pX2,pY2,pSize

[pRegion] = ""

String

Région à créer pour ce texte

Exemple :

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

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

VI-K - TextCreateRegionOutline

Création de région texte au lieu de rectangle.

Type Boolean en lecture / écriture.

Si Vrai le paramètre pRegion crée une région composée des lettres du texte au lieu de créer une région rectangulaire.

VI-L - DrawImg

Dessine une image de la liste d'images secondaires sur l'image principale.

Voir les fonctions Img* pour créer les images secondaires.

Paramètres :

Paramètre

Type

Explication

pImg

Object ou String

Nom de l'image ou objet image clGdiplus

pX1,pY1,[pX2],[pY2]

Long ou Single

Position de l'image
Si pX2 et pY2 sont omis alors on conserve la taille de l'image
Si pX2 ou pY2 sont omis alors on calcule la dimension manquante par rapport à l'autreen conservant le rapport hauteur/largeur.
Si pImgSizeMode = GdipSizeModeAutoSize:
pX1,pY1 : Position de l'image
pX2 : Largeur de l'image
pY2 : Hauteur de l'image
Si pImgSizeMode = GdipSizeModeZoom/GdipSizeModeStretch/GdipSizeModeClip :
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] = GdipSizeModeZoom

EGdipImgSizeMode

Type d'affichage de l'image (Zoom par défaut)

[pImgPictureAlignment] = GdipAlignCenter

EGdipImgPictureAlignment

Position de l'image (centrée par défaut)

[pPercent]=255

Integer

Pourcentage pour affichage transclucide (0:invisible;255:normal)

[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.
Sinon la région ajoutée est le rectangle de positionnement.

[pRegionAlpha] = -1

Long

Si renseigné, la région ajoutée contient les points de transparences différentes de pRegionAlpha
Sinon la région ajoutée est le rectangle de positionnement.

VI-M - DrawBitmap

Dessine un bitmap Gdiplus sur l'image.

Paramètres :

Paramètre

Type

Explication

pBitmap

Long ou LongLong

Identifiant du bitmap GdiPlus à dessiner

pX1,pY1,[pX2],[pY2]

Long ou Single

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'autreen conservant le rapport hauteur/largeur.
Si pImgSizeMode = GdipSizeModeAutoSize :
pX1,pY1 : Position de l'image
pX2 : Largeur de l'image
pY2 : Hauteur de l'image
Si pImgSizeMode = GdipSizeModeZoom/GdipSizeModeStretch/GdipSizeModeClip :
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] = GdipSizeModeZoom

EGdipImgSizeMode

Type d'affichage de l'image (Zoom par défaut)

[pImgPictureAlignment] = GdipAlignCenter

EGdipImgPictureAlignment

Position de l'image (centrée par défaut)

[pPercent] = 255

Integer

Pourcentage pour affichage transclucide (0:invisible;255:normal)

[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.
Sinon la région ajoutée est le rectangle de positionnement.

[pRegionAlpha] = -1

Long

Si renseigné, la région ajoutée contient les points de transparences différentes de pRegionAlpha
Sinon la région ajoutée est le rectangle de positionnement.

VI-N - DrawControl

Dessine un contrôle sur l'image.

Paramètres :

Paramètre

Type

Explication

pX1,pY1,pX2,pY2

Long ou Single

Position du contrôle.

pControlType

EGdipControlType

Type de contrôle.

[pPushed] = False

Boolean

Si bouton appuyé ou non.

[pChecked] = False

Boolean

Si case cochée ou non.

[pInactive] = False

Boolean

Si actif ou non.

[pFlat] = False

Boolean

Si plat ou 3D.

[pAdjustRect] = False

Boolean

Si Vrai, retourne les coordonées de l'intérieur du contrôle dans les paramètres pX1,pY1,pX2,pY2.

[pRegion] = ""

String

Ajoute une région de nom pRegion

VI-O - DrawTexture

Dessine une texture sur l'image.

Paramètres :

Paramètre

Type

Explication

pName

String

Nom de la texture

pX,pY,pX2,pY2

Long ou Single

Position de la texture.
pX2 et PY2 peuvent être omis.

[pRegion] = ""

String

Ajoute une région rectangulaire de nom pRegion

VI-P - PenAlignMode

Alignement du crayon

Type Long en lecture / écriture.

Voir énumération EGdipPenAlignMode
S'applique aux fonctions de dessin (rectangle, polygone, ellipse, ...).

VI-Q - SmoothingMode

Dessin avec lissage.

Type EGdipSmoothingMode en lecture / écriture.

S'applique aux fonctions de dessin de lignes, polygones et ellipse, ainsi qu'à l'encadrement de région (RegionFrame).

VI-R - DrawDashCustom

Pointillés personnalisés.

Type Variant en lecture / écriture.

S'applique aux fonctions de dessin de lignes, polygones..., ainsi qu'à l'encadrement de région (RegionFrame).

Lorsque le type de pointillés (paramètre pDash des fonctions de dessin) est GdipDashDASHCUSTOM (5), cette propriété est utilisée pour spécifier le type de pointillés.

l faut passer en paramètre un tableau contenant les tailles des traits et des espaces.

Par exemple pour dessiner un axe avec 10 pixels dessinés, espace de 1 pixels, 2 pixels dessinés, espace de 1 pixel.

ogdi.DrawDashCustom = Array(10, 1, 2, 1)
ogdi.DrawLine 50, 50, 200, 200, vbRed, 2, GdipDashDASHCUSTOM

VI-S - LineStart

Type de début de ligne.

Type EGdipLineCap en lecture / écriture.

VI-T - LineEnd

Type de fin de ligne.

Type EGdipLineCap en lecture / écriture.

VI-U - LineJoin

Type de jointure de ligne.

Type EGdipLineJoin en lecture / écriture.

VI-V - LineJoinMiterLimit

Limite aux jointures de ligne.

Type Single en lecture / écriture.

VI-W - LineArrowLength

Taille des flèches de début ou fin de ligne.

Type Single en lecture / écriture.

VI-X - LineArrowFill

Remplissage ou non des flèches de début ou fin de ligne.

Type Boolean en lecture / écriture.

VII - Liste d'images secondaires

Ces images secondaires sont déconnectées de l'image principale.
Il est possible de les modifier sans altérer cette dernière.

Chaque image possède un identifiant unique de type chaîne de caractères.
Ces images sont des instances de clGdiplus.

Utilisez ensuite la fonction DrawImg pour dessiner une de ces images sur l'image principale.

VII-A - ImgNew

Crée une image secondaire vierge.

Paramètres :

Paramètre

Type

Explication

[pName] = ""

String

Nom de l'image

pWidth

Long

Largeur de l'image

pHeight

Long

Hauteur de l'image

pBefore

Variant/String

Nom de l'image secondaire avant laquelle insérer la nouvelle image

pAfter

Variant/String

Nom de l'image secondaire après laquelle insérer la nouvelle image

VII-B - ImgNewForImage

Crée une image secondaire vierge.

Son format est déterminé par une autre image.
L'affichage d'une image sur une autre image de même format est plus rapide.

Paramètres :

Paramètre

Type

Explication

[pName] = ""

String

Nom de l'image

[pImgRef]

Variant

Image de référence pour le format.
Object clGdiplus ou nom d'une image secondaire.

pWidth

Long

Largeur de l'image

pHeight

Long

Hauteur de l'image

pBefore

Variant/String

Nom de l'image secondaire avant laquelle insérer la nouvelle image

pAfter

Variant/String

Nom de l'image secondaire après laquelle insérer la nouvelle image

VII-C - ImgNewTemp

Crée une image secondaire vierge temporaire.

Cette image n'est pas ajoutée à la liste d'images.
Elle sera supprimée dès que l'objet retourné par la fonction est libéré.

Paramètres :

Paramètre

Type

Explication

[pName] = ""

String

Nom de l'image

pWidth

Long

Largeur de l'image

pHeight

Long

Hauteur de l'image

VII-D - Img

Recherche d'une image secondaire.

La fonction retourne un objet clGdiplus.

Paramètres :

Paramètre

Type

Explication

pName

String

Nom de l'image

VII-E - ImgExists

Teste si l'image secondaire existe.

La fonction retourne Vrai si l'image est déjà dans la liste.

Paramètres :

Paramètre

Type

Explication

pName

String

Nom de l'image

VII-F - Imgs

Collection d'image secondaires.

Cette propriété retourne une collection d'images de type clGdiplus.

VII-G - ImgDelete

Supprime une image secondaire de la liste d'images.

Paramètres :

Paramètre

Type

Explication

pName

String

Nom de l'image

VII-H - ImgsDelete

Supprime plusieurs images secondaires de la liste d'images.

Paramètres :

Paramètre

Type

Explication

[pName] = "*"

String

Nom des images.
Le caractères * est accepté.

VII-I - ImgClone

Clone une image secondaire.

Paramètres :

Paramètre

Type

Explication

pImgSource

Object ou String

Nom de l'image ou image clGdiplus à cloner

pNameDest

String

Nom de l'image clonée et ajouter à la liste d'images secondaires

VII-J - ImgDraw

Dessine l'image courante sur une autre image.

Paramètres :

Paramètre

Type

Explication

pTarget

clGdiplus

Objet image clGdiplus sur lequel dessiner l'image courante.

pX1,pY1,[pX2],[pY2]

Long ou Single

Position de l'image
Si pX2 et pY2 sont omis alors on conserve la taille de l'image
Si pX2 ou pY2 sont omis alors on calcule la dimension manquante par rapport à l'autreen conservant le rapport hauteur/largeur.
Si pImgSizeMode = GdipSizeModeAutoSize:
pX1,pY1 : Position de l'image
pX2 : Largeur de l'image
pY2 : Hauteur de l'image
Si pImgSizeMode = GdipSizeModeZoom/GdipSizeModeStretch/GdipSizeModeClip :
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] = GdipSizeModeZoom

EGdipImgSizeMode

Type d'affichage de l'image (Zoom par défaut)

[pImgPictureAlignment] = GdipAlignCenter

EGdipImgPictureAlignment

Position de l'image (centrée par défaut)

[pPercent]=255

Integer

Pourcentage pour affichage transclucide (0:invisible;255:normal)

[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.
Sinon la région ajoutée est le rectangle de positionnement.

[pRegionAlpha] = -1

Long

Si renseigné, la région ajoutée contient les points de transparences différentes de pRegionAlpha
Sinon la région ajoutée est le rectangle de positionnement.

Cette méthode est équivalente à un appel de DrawImg à partir de l'image cible.

VII-K - ImgName

Nom de l'image secondaire.

Cette propriété retourne le nom de l'image courante si c'est une image secondaire.

VII-L - Parent

Parent de l'image secondaire.

Cette propriété retourne un objet de type clGdiplus.

VIII - Transformations

Ces fonctions appliquent une transformation au contexte d'affichage.

Ces transformations s'appliquent aux opérations de dessin effectuées sur l'image et la création de régions.

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] = True

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] = 0

Single

Translation horizontale

[pdY] = 0

Single

Translation verticale

[pRight] = True

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] = 1

Single

Mise à l'échelle horizontale

[psY] = 1

Single

Mise à l'échelle verticale

[pRight] = True

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 WorldPop.

Paramètres :

Paramètre

Type

Explication

[pMatrix] = "default"

String

Nom de la matrice à sauvegarder.

VIII-F - WorldPop

Restaure les transformations préalablement sauvegardées avec WorldPush.

Paramètres :

Paramètre

Type

Explication

[pMatrix] = "default"

String

Nom de la matrice à restaurer.

VIII-G - WorldView

Définit les transformations à partir de deux rectangles.

Paramètres :

Paramètre

Type

Explication

pSrcX1, pSrcY1, pSrcX2, pSrcY2

Single

Coordonnées du rectangle source.

pDstX1, pDstY1, pDstX2, pDstY2

Single

Coordonnées du rectangle cible.

VIII-H - WorldTransformPoint

Transforme les coordonnées d'un point.

Paramètres :

Paramètre

Type

Explication

pX, pY

Long

Coordonnées du point à transformer.

[pMatrix] = ""

String

Nom de la matrice à utiliser pour la transformation.
Si non précisé, c'est la matrice courante qui est utilisée.

VIII-I - WorldTransformVector

Transforme les coordonnées d'un vecteur.

Les transformations de translation ne sont pas appliquées.

Paramètres :

Paramètre

Type

Explication

pX, pY

Long

Coordonnées du vecteur à transformer.

[pMatrix] = ""

String

Nom de la matrice à utiliser pour la transformation.
Si non précisé, c'est la matrice courante qui est utilisée.

IX - Régions / collisions

IX-A - RegionAppend

Type Booléen en lecture / écriture.

Utiliser ce paramètre pour cumuler les régions créées avec le même nom.

IX-B - CreateRegionLine

Ajoute une région ligne.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

pX1,pY1,pX2,pY2

Long ou Single

Coordonnées du segment.

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

IX-C - CreateRegionEllipse

Ajoute une région elliptique.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

pX1,pY1,pX2,pY2

Long ou Single

Position de l'ellipse

[pType] = TypeEllipseRectangle

EGdipTypeEllipse

Type de positionnement
Si pType = TypeEllipseRectangle = 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 = TypeEllipseCenter = 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

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

IX-D - CreateRegionPolygon

Ajoute une région polygonale.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

pPoints

Variant

Tableau de points (Long ou Single) formant le polygone
Array(X1,Y1,X2,Y2,X3,Y3,...)

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

IX-E - CreateRegionRect

Ajoute une région rectangulaire.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

pX1,pY1

Long ou Single

Point Haut-Gauche du rectangle

pX2,pY2

Long ou Single

Point Bas-Droite du rectangle

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

IX-F - CreateRegionRoundRect

Ajoute une région rectangulaire avec coins arrondis.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

pX1,pY1

Long ou Single

Point Haut-Gauche du rectangle

pX2,pY2

Long ou Single

Point Bas-Droite du rectangle

pX3,pY3

Long ou Single

Taille de l'ellipse utilise pour les coins

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

IX-G - CreateRegionCurve

Ajoute une région à partir d'une ou plusieurs courbes de Bézier.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

pPoints

Variant

Tableau de points (Long ou Single) formant la courbe: Array(X1,Y1,X2,Y2,X3,Y3,...).
Nécessite 1 point de départ + 3 points par courbe.

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

IX-H - CreateRegionCardinal

Ajoute une région à partir d'une ou plusieurs courbes cardinales.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

pPoints

Variant

Tableau de points (Long ou Single) formant la courbe: Array(X1,Y1,X2,Y2,X3,Y3,...)

[pTension] = 0.5

single

Tension de la courbe

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

IX-I - CreateRegionSVG

Ajoute une région à partir d'un chemin SVG.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

pPath

String

Chemin au format SVG.
Attention : toute la norme SVG n'est pas implémentée.
Voir la fonction DrawSVG pour plus d'informations.

[pPenWidth] = 1

Long ou Single

Epaisseur de la ligne

IX-J - 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 RegionFrame car c'est en fait un ensemble de rectangle remplissant la région.

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]=False

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 MsPaint)

IX-K - Regions

Renvoie une collection des noms de régions.

IX-L - RegionDelete

Supprime une région.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région à supprimer

IX-M - RegionsDelete

Supprime toutes les régions spécifiées.

Paramètres :

Paramètre

Type

Explication

[pRegion]="*"

String

Nom des regions à supprimer, peut contenir un joker (*)

IX-N - RegionFrame

Dessine un trait qui encadre la région.

Les paramètres suivants ne fonctionnent qu'avec des chemins : pAlpha, pDash et pInside.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

[pPenColor] = vbBlack

Long

Couleur du trait

[pPenWidth] = 1

Long ou Single

Epaisseur du trait

[pAlpha] = 255

Integer

Transparence du trait (0 --> 255)

[pDash] = GdipDashSOLID

EGdipDashStyle

Style des pointillés

[pInside] = Faux

Boolean

Encadre à l'intérieur si Vrai

IX-O - RegionFill

Remplit une region d'une couleur.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

[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)

IX-P - RegionHatch

Hachure une région.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

[pColor] = vbBlack

Long

Couleur de remplissage

[pBackColor] = -1

Long

Deuxième couleur pour le fond

[pStyle] = HatchStyleHorizontal

EGdipHatchStyle

Type de hachure

[pAlpha] = 255

Integer

Transparence des hachures(0 --> 255)

IX-Q - FillMode

Mode de remplissage.

Type EGdipFillMode en lecture / écriture.

IX-R - GetRegionXY

Identifie la région située sur un point.

Paramètres :

Paramètre

Type

Explication

pX

Single

Position X du point

pY

Single

Position Y du point

[pInclude]

Variant

Tableau de régions à inclure.
L'utilisation de joker (*) est possible.

[pExclude]

Variant

Tableau de régions à exclure.
L'utilisation de joker (*) est possible.

[pObject]

Variant

Contrôle ou formulaire utilisé pour convertir les coordonnées de twips/points vers pixels.

[pMatrix]

Variant

Matrice utilisée pour convertir les coordonnées.

La fonction retourne le nom de la région (la première trouvée) située sur le point précisé.

Exemple :

Recherche le nom 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       ' Region survolée
' On convertit les coordonnées vers des coordonnées images en pixels avec CtrlToImgX et CtrlToImgY
lRegion = oGdi.GetRegionXY(oGdi.CtrlToImgX(X, Me.Image0), oGdi.CtrlToImgY(Y, Me.Image0))
' Ou alors on peut utiliser le paramètre pObject
lRegion = oGdi.GetRegionXY(X, Y, , ,Me.Image0)
End Sub

IX-S - GetRegionXYLine

Identifie la region située sur un point.

Ne fonctionne qu'avec des chemins.

Le point doit être situé sur la ligne formant la région et non pas à l'intérieur.

Paramètres :

Paramètre

Type

Explication

pX

Single

Position X du point

pY

Single

Position Y du point

[pLineWidth] = -1

Long ou Single

Largeur du trait pour le test.
Laissez à -1 pour utiliser la largeur spécifiée lors de la création de la région.

[pInclude]

Variant

Tableau de régions à inclure.
L'utilisation de joker (*) est possible.

[pExclude]

Variant

Tableau de régions à exclure.
L'utilisation de joker (*) est possible.

[pObject]

Variant

Contrôle ou formulaire utilisé pour convertir les coordonnées de twips vers pixels.

[pMatrix]

Variant

Matrice utilisée pour convertir les coordonnées.

La fonction retourne le nom de la région située sur le point précisé.

Exemple :

Recherche le nom 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       ' Region survolée
' On convertit les coordonnées vers des coordonnées images en pixels avec CtrlToImgX et CtrlToImgY
lRegion = oGdi.GetRegionXYLine(oGdi.CtrlToImgX(X, Me.Image0), oGdi.CtrlToImgY(Y, Me.Image0))
' Ou alors on peut utiliser le paramètre pObject
lRegion = oGdi.GetRegionXYLine(X, Y, , , ,Me.Image0)
End Sub

IX-T - PointInRegion

Teste si un point est dans une région.

Paramètres :

Paramètre

Type

Explication

pX

Single

Position X du point

pY

Single

Position Y du point

pRegion

String

Nom de la région à tester

[pObject]

Variant

Contrôle ou formulaire utilisé pour convertir les coordonnées de twips vers pixels.

La fonction retourne Vrai si le point est dans la région précisée en paramètre.

IX-U - PointInRegionLine

Teste si un point est sur une région.

Ne fonctionne qu'avec des chemins.

Le point doit être situé sur la ligne formant la région et non pas à l'intérieur.

Paramètres :

Paramètre

Type

Explication

pX

Long ou Single

Position X du point

pY

Long ou Single

Position Y du point

pRegion

String

Nom de la région à tester

[pLineWidth] = -1

Long ou Single

Largeur du trait pour le test.
Laissez à -1 pour utiliser la largeur spécifiée lors de la création de la région.

[pObject]

Variant

Contrôle ou formulaire utilisé pour convertir les coordonnées de twips vers pixels.

La fonction retourne Vrai si le point est sur l'entourage de la région précisée en paramètre.

IX-V - RegionGetRect

Coordonnées rectangulaires d'une région.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région.

pX1, pY1, pX2, pY2

Long ou Single

En retour = coordonnées du rectangle contenant la région.

IX-W - RegionGetCenter

Coordonnées du centre d'une région.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région.

pX, pY

Long ou Single

En retour = coordonnées du centre de la région.

IX-X - RegionExists

Teste si une région existe.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région à tester

La fonction retourne Vrai si la région existe.

IX-Y - RegionIsEmpty

Teste si une région est vide.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région à tester

La fonction retourne Vrai si la région est vide.

Une région peut être vide par exemple suite à une combinaison avec d'autres régions.

IX-Z - RegionIsPath

Teste si une région est un chemin (path) Gdi+.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région à tester

La fonction retourne Vrai si la région est une chemin Gdi+.

C'est-à-dire que la région est une succession de lignes.

Certaines fonctions ne fonctionnent qu'avec des chemins.

IX-AA - 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 : cette région ne sera plus un chemin sauf utilisation de CombineModeUnion avec un autre chemin.

pRegion2

String

Nom de la deuxième région

pCombineMode

EGdipCombineMode

Mode de combinaison

IX-AB - RegionScale

Redimensionne une région.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

pScaleX, pScaleY

Single

Facteurs de redimensionnement

[pCenter] = True

Booléen

Si vrai, le rectangle contenant la région est recentré après redimensionnement

IX-AC - RegionTranslate

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

IX-AD - RegionRotate

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] = True

Booléen

Si vrai, le rectangle contenant la région est recentré après rotation

IX-AE - RegionTransform

Transforme une région.

Paramètres :

Paramètre

Type

Explication

pRegion

String

Nom de la région

[pMatrix] = ""

String

Nom d'une matrice.
Ou matrice courante si non précisé.

IX-AF - RegionsIntersect

Teste si deux régions ont une intersection.

La fonction retourne 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

[pRegionIntersect]

String

Retourne dans ce paramètre le nom de la première région en intersection.

IX-AG - 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

IX-AH - 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

Control

Contrôle de référence
A utiliser si la région a été créée par rapport à l'image du contrôle.

[pInverseRegion]=False

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

[pCorrectionRight]=0

Single

Correction de position droite de la région en pixel

[pCorrectionBottom]=0

Single

Correction de position basse de la région en pixel

IX-AI - ResetFormRegion

Rétablit l'affichage du formulaire complet.

Paramètres :

Paramètre

Type

Explication

pForm

Formulaire

Le formulaire à rétablir

X - Sauvegarde de l'image principale en mémoire

X-A - ImageKeep

Sauvegarde l'image principale 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 ImageReset.

X-B - ImageReset

Rétablit l'image de la mémoire

Paramètres :

Paramètre

Type

Explication

[pImage]="Default"

String

Nom de la sauvegarde

X-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

X-D - ImageDelete

Supprime une image sauvegardée en mémoire avec ImageKeep.

Paramètres :

Paramètre

Type

Explication

[pImage]="Default"

String

Nom de la sauvegarde à supprimer

X-E - ImagesDelete

Supprime toutes les images principales sauvegardées en mémoire.

Paramètres :

X-F - ImageGetBitmap

Renvoie le bitmap gdiplus d'une image principale sauvegardée en mémoire.

Paramètres :

Paramètre

Type

Explication

[pImage]="Default"

String

Nom de la sauvegarde à supprimer

[pClone]= Faux

Boolean

Si Vrai, clone l'image.

XI - Données Exif

XI-A - GetExifData

Renvoie la valeur du tag EXIF.

Paramètres :

Paramètre

Type

Explication

pTag

EGdipTagName

Identifiant du tag Exif à lire.

Renvoie la valeur du tag dans un Variant.
Renvoie Null si le tag n'existe pas.

XI-B - SetExifData

Ecrit certains> tags Exif.

Paramètres :

Paramètre

Type

Explication

pTag

EGdipTagName

Identifiant du tag Exif à lire

pValue

Variant

Valeur du tag à écrire

Si la valeur passée en paramètre est Null, le tag est supprimé de l'image.

XI-C - GenerateThumbnail

Génère une miniature EXIF intégrée à l'image.

Cette miniature ne sera utile que dans la cas d'une sauvegarde dans un fichier JPEG ou TIFF.

Paramètres :

Paramètre

Type

Explication

[pSize] = 200

Long

Taille maxi de la miniature.

[pQuality] = -1

Long

Qualité de la miniature (0 à 100)

XI-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

XII - Gif animés

XII-A - GifSetFrame

Change l'image courante d'un GIF animé.

Paramètres :

Paramètre

Type

Explication

pFrame

Long

Numéro de l'image

XII-B - GifGetFrameCount

Nombre d'images d'un GIF animé.

XII-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.

XIII - Textures

Les textures dans Gdi+ ne se comportent pas comme les textures de OpenGL par exemple.
Elles remplissent une zone en se répétant, mais ne s'étendent pas.
Elles ont comme origine le point (0,0) de l'image ; il faut donc les décaler pour les afficher à un endroit précis.

XIII-A - TextureAddFromFile

Ajoute une texture à partir d'un fichier.

Paramètres :

Paramètre

Type

Explication

pName

String

Nom de la texture

pFile

String

Chemin du fichier de la texture

XIII-B - TextureAddFromImg

Ajoute une texture à partir d'une image secondaire.

Paramètres :

Paramètre

Type

Explication

pName

String

Nom de la texture

pImg

Object ou String

Nom de l'image secondaire ou image clGdiplus contenant la texture

XIII-C - TextureAddFromControl

Ajoute une texture à partir de l'image intégrée à un contrôle.

Paramètres :

Paramètre

Type

Explication

pName

String

Nom de la texture

pCtrl

Control

Contrôle contenant la texture

XIII-D - TextureDelete

Supprime une texture.

Paramètres :

Paramètre

Type

Explication

pName

String

Nom de la texture

XIII-E - TextureTranslate

Déplace une texture.

Paramètres :

Paramètre

Type

Explication

pName

String

Nom de la texture

pDx, pDy

Single

Déplacements en pixels

XIII-F - TextureWidth

Largeur une texture.

Renvoie la largeur en pixel.

Paramètres :

Paramètre

Type

Explication

pName

String

Nom de la texture

XIII-G - TextureHeight

Hauteur une texture.

Renvoie la hauteur en pixel.

Paramètres :

Paramètre

Type

Explication

pName

String

Nom de la texture

XIII-H - FillTexture

Texture de remplissage.

Type String en lecture / écriture.

S'applique aux fonctions de dessin (y compris des textes), ainsi qu'aux fonctions de remplissage (FillColor et RegionFill).

XIII-I - PenTexture

Texture de crayon pour les lignes.

Type String en lecture / écriture.

S'applique aux fonctions de dessin de lignes, ainsi qu'à l'encadrement de région (RegionFrame).

XIV - Polices de caractères

XIV-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

XIV-B - FontPrivateAddFromByte

Ajoute une police de caractères privée à partir d'un tableau de byte contenant la police.

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

XIV-C - FontsPrivateDelete

Supprime toutes les polices de caractères privées.

Pas de paramètre

XIV-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.

XV - Conversion de coordonnées

XV-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 (UserForm) ou Twips (Access) en sortie.

Paramètres :

Paramètre

Type

Explication

pX ou pY

Long ou Single

Abscisse ou ordonnées à convertir

pObject

Object

Contrôle Image ou formulaire à 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.

XV-B - CtrlToImgX et CtrlToImgY

Converti depuis les coordonnées contrôle vers les coordonnées image

On donne des points (UserForm) ou Twips (Access) en entrée, on reçoit des pixels en sortie.

Paramètres :

Paramètre

Type

Explication

pX ou pY

Single

Abscisse ou ordonnées à convertir

pObject

Object

Contrôle Image ou formulaire à 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.

XV-C - PointsToPixelsX et PointsToPixelsY

Converti les Points (UserForm) ou Twips (Access) en Pixels

Paramètres :

Paramètre

Type

Explication

pPointsX
pPointsY

Single

Valeur à convertir

La fonction retourne la valeur convertie en Pixels

XV-D - PixelsToPointsX et PixelsToPointsY

Converti les Pixels en Points (UserForm) ou en Twips (Access)

Paramètres :

Paramètre

Type

Explication

pPixelsX
pPixelsY

Long ou Single

Valeur à convertir

La fonction retourne la valeur convertie en Points (UserForm) ou en Twips (Access)

XVI - Autres fonctions diverses

XVI-A - GetPixel

Renvoie la couleur d'un point

Paramètres :

Paramètre

Type

Explication

pX,pY

Long ou Single

Coordonnées du point

la fonction retourne la couleur du point dans un entier 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)
Dim lColor As Long       ' Couleur sous la souris
' On convertit les coordonnées vers des coordonnées images en pixels avec CtrlToImgX et CtrlToImgY
lColor = oGdi.GetPixel(oGdi.CtrlToImgX(X, Me.Image0), oGdi.CtrlToImgY(Y, Me.Image0))
End Sub

XVI-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

XVI-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).

Remarque : Utiliser la fonction RepaintNoFormRepaint à la place de la fonction Repaint aide à réduire significativement les scintillements.

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

' Désactive le thème XP pour réduire les scintillements si la version d'Access est 2003
If SysCmd(acSysCmdAccessVer) = "11.0" Then oGdi.SetXPTheme False

XVI-D - SetDoubleBufferXP

Permet de réduire le scintillement de l'image (pour WinXP/Acc2003)

Remarque : Utiliser la fonction RepaintNoFormRepaint à la place de la fonction Repaint aide à réduire significativement les scintillements.

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

' Activer le double buffer pour réduire les scintillements si la version d'Access est 2003
If SysCmd(acSysCmdAccessVer) = "11.0" Then oGdi.SetDoubleBufferXP Me

XVI-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

' Remarque : Ne fonctionne pas sur l'événement Click
Private Sub Image0_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
oGdi.DragForm Me
End Sub

XVI-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 ou Single

Taille de police

[pObject]=Nothing

Object

Contrôle ou formulaire de référence

XVI-G - PixelToFontSize

Conversion taille police en points

Convertit une taille de police de caractères de pixels en points.

Paramètres :

Paramètre

Type

Explication

pPixel

Long ou Single

Taille en pixel

[pObject]=Nothing

Object

Contrôle ou formulaire de référence

XVI-H - GetUserFormHandle

Identifiant d'un UserForm, d'une Frame ou d'une Page

Pour Excel, Word, PowerPoint.

Paramètres :

Paramètre

Type

Explication

pForm

Long

Objet control ou formulaire

pClientArea

Boolean

Si Faux, la fonction retourne l'identifiant du UserForm (ou Frame ou Page).
Si Vrai, la fonction retourne l'identifiant de la sous-fenêtre (du UserForm, de la Frame ou de la Page) sur laquelle on dessine.

XVI-I - GetClientHandle

Identifiant de la sous-fenêtre sur laquelle on dessine (=section).

Pour Access.

Paramètres :

Paramètre

Type

Explication

pImgCtrl

Control

Contrôle contenu dans la section de laquelle on veut l'identifiant.

XVI-J - PathIsImage

Test si un chemin est celui d'un fichier image valide.

Paramètres :

Paramètre

Type

Explication

pPath

String

Chemin du fichier.

Retourne Vrai si le chemin est celui d'une image valide reconnue par Gdi+.

XVI-K - GetControlPos

Lecture de la position d'un contrôle ou formulaire en pixels.

Paramètres :

Paramètre

Type

Explication

pObject

Object

Le contrôle ou formulaire.

pX1,pY1,pX2,pY2

Long ou Single

Les positions des points haut-gauche et bas-droite du rectangle contenant le contrôle.

[pIncludeBorders]=False

Boolean

Mettre à Vrai (True) pour inclure les bordures.

Retourne le décalage en pixel de l'image dans le contrôle.
C'est-à-dire les coordonnées en pixel par rapport au contrôle de l'origine (0,0) de l'image.

XVI-L - ApplicationPath

Retourne le chemin de l'application (= du projet Office), y compris l'antislash final.

XVII - Propriétés diverses

XVII-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.

XVII-B - ImageFormat

Format de l'image

Type EGdipImageFormat en lecture seule.

Dépend du format du fichier ouvert avec OpenFile.

Si l'image est crée avec CreateBitmap, le format est gdipFormatMemoryBMP.

XVII-C - ImageFormatText

Format de l'image en texte

Type string en lecture seule.

Valeurs 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 le format est MemoryBMP.

XVII-D - RefControl

Contrôle de référence pour coordonnées passées en points/twips

Type Control en lecture / écriture.

Si RefControl est défini, les fonctions acceptent des coordonnées passées en Twips (pour Access) ou en Points (Pour UserForm).

Pour annuler et repasser en pixels, affectez Nothing à cette propriété.

Exemple :

Affichage d'un pixel rouge à l'emplacement de la souris

' Deux solutions identiques :
'
' 1 - Sans utiliser RefControl
oGdi.DrawPixel oGdi.CtrlToImgX(X, Me.Image0), oGdi.CtrlToImgY(Y, Me.Image0), vbRed
'
' 2 - En utilisant RefControl
oGdi.RefControl = Me.Image0
oGdi.DrawPixel X, Y, vbRed
oGdi.RefControl = Nothing

XVII-E - WrapX et WrapY

Décalage d'une image avec enroulement.

Type Long en lecture / écriture.

S'applique aux fonctions DrawImg et DrawBitmap.

XVII-F - TransparencyMode

Dessin des images avec ou sans transparence.

Type EGdipTransparencyMode en lecture / écriture.

GdipTransparencySourceOver est la valeur par défaut.

GdipTransparencySourceCopy est plus rapide mais dessine les pixels sans les fusionner avec l'image sur laquelle on dessine.

XVII-G - AntialisingLevel

Niveau d'antialiasing.

Type Long en lecture / écriture.

Voir énumération EGdipAntialisingLevel.

XVII-H - LastTextBottom et LastTextRight

Positions en bas et à droite du dernier texte écrit.

Type Long ou Single en lecture / écriture.

XVII-I - MaxTextSize, MinTextSize et LastTextSize

Taille du texte ajusté.

Type Long ou Single en lecture / écriture.

Si MaxTextSize ou MinTextSize sont différents de 0, le texte va s'ajuster pour tenir dans le rectangle défini dans l'appel à DrawText.

LastTextSize contient alors la dernière taille du texte ajusté.

XVII-J - DrawClipRegion

Region limitant le dessin.

Type String en écriture seule.

La région spécifiée limite le dessin à l'intérieur de celle-ci, ou à l'extérieur si le paramètre pInclude est égal à False.

XVII-K - DrawClipRectangle

Rectangle limitant le dessin.

Paramètres :

Paramètre

Type

Explication

pX1,pY1,pX2,pY2

Long ou Single

Les positions des points haut-gauche et bas-droite du rectangle.

[pInclude]=True

Boolean

La région spécifiée limite le dessin à l'intérieur de celle-ci, ou à l'extérieur si le paramètre pInclude est égal à False.

XVII-L - DpiX et DpiY

Résolution de l'image (points par pouce).

Type Single en lecture / écriture.

XVIII - 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 !

XIX - Les téléchargements

Télécharger le module de classe au format texte
Télécharger la base d'exemples au format ACCESS 2000
Télécharger la base d'exemples au format EXCEL 2000