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 :

Image non disponible

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.

Image non disponible

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 :

 
Sélectionnez
#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 :

 
Sélectionnez
    #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.

Une image secondaire étant un objet clGdiplus, elle est également une image principale et peut contenir ses propres images secondaires.

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é
Sélectionnez
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
Sélectionnez

' 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
Sélectionnez
' 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
Sélectionnez
' 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 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
Sélectionnez
' 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
Sélectionnez
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
Sélectionnez
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
Sélectionnez
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
Sélectionnez
        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
Sélectionnez
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
Sélectionnez
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
Sélectionnez
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°
Sélectionnez
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
Sélectionnez
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
Sélectionnez
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
Sélectionnez
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
Sélectionnez
' 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
Sélectionnez
' 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
Sélectionnez
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
Sélectionnez
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.

 
Sélectionnez
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
Sélectionnez
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
Sélectionnez
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
Sélectionnez
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
Sélectionnez
' 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
Sélectionnez
' 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
Sélectionnez
' 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
Sélectionnez
' 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▲