I. Introduction▲
GDI est une librairie graphique.
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.
La classe clGdi32, dont cet article est la documentation, encapsule ces API pour faciliter leur utilisations.
Exemples d'images obtenues grâce à cette classe : :
Les départements d'une carte de France sont colorés au passage de la souris, et on peut les sélectionner en cliquant dessus.
On peut afficher sur la carte le numéro des départements et leur nom lorsqu'on les survole.
Dessin d'une horloge analogique.
Si on déplace la souris en cliquant sur une aiguille l'heure change.
II. Remarques préalables▲
II-A. Remarques▲
- L'unité utilisée par cette classe est le pixel.
- La classe est développée sur Access 2003 ou 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 renvoient False (Faux) en cas d'échec (ou Vrai si succès).
II-B. Pré-requis▲
La librairie gdi32 est intégrée à toute les versions de Windows.
Il n'y a donc pas de pré-requis particuliers.
II-C. Utilisation dans un UserForm▲
Par défaut, le dessin se fait dans un contrôle image d'un formulaire Access.
Pour utiliser la classe ClGdi32 dans un UserForm, recherchez la constante de compilation Access et remplacez :
#Const Access = True
par
#Const Access = False
Le dessin se fait alors dans un contrôle image sur un UserForm.
N'importe quelle application Office gérant les UserForms peut alors être utilisée (Excel, Word, Powerpoint, ...)
Dans ce cas, la librairie Microsoft Forms X.X Objet Library est nécessaire.
Cette librairie est référencée automatiquement à la création d'un UserForm.
Sinon il faut la référencer dans Outils => Référence.
III. Les fonctions de création et de sauvegarde de l'image principale▲
III-A. OpenFile▲
Ouvre un fichier.
Charge le fichier en mémoire, il devient l'image principale.
On peut ensuite modifier l'image, dessiner dessus, ...
La fonction renvoie Vrai si le fichier a été ouvert avec succès.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pFile | String | Chemin complet du fichier image |
[pIcon]=Gdi32NoIcon | EGdi32IconType |
Gdi32NoIcon = Charge le fichier normalement Gdi32SmallIcon = Charge la grande icone associée au fichier Gdi32LargeIcon = Charge la grande icone associée au fichier |
III-B. CloseFile▲
Ferme l'image principale.
L'image principale peut être un fichier chargé avec OpenFile, un bitmap créé avec CreateBitmap, ...
Pensez à refermer l'image dès que possible pour libérer de la mémoire.
Une seule image principale est active à la fois : la fonction CloseFile n'a donc pas besoin de paramètre.
III-C. CreateBitmap▲
Création d'une image vierge.
L'image est créée en mémoire, elle devient l'image principale.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pWidth | Long | Largeur de l'image en pixels |
pHeight | Long | Hauteur de l'image en pixels |
III-D. CreateBitmapForImage▲
Création d'une image vierge.
L'image a la taille du contrôle donné en paramètre.
L'image est créée en mémoire, elle devient l'image principale active.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pImgCtrl | Contrôle | Contrôle qui détermine la taille de l'image. |
III-E. SaveFile▲
Sauvegarde l'image principale dans un fichier.
La fonction renvoie Vrai si le fichier a pû être sauvegardé.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pFile | String | Chemin du fichier de sauvegarde. |
[pFormat]="BMP" | String | Format du fichier : BMP ou EMF. |
[pTransparentColor]=-1 | Long | Couleur de transparence pour EMF uniquement. La couleur spécifiée sera transparente dans l'image exportée. |
IV. Autres fonctions de lecture / écriture de l'image principale▲
IV-A. GetPixels▲
Renvoie un tableau de pixels avec les couleurs ARGB
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pPixels | Tableau de Byte | Tableau de points ARGB |
La fonction renvoie un tableau de pixels ARGB.
A = Alpha = Transparence : Non utilisé par gdi32
R = Red = Rouge
G = Green = Vert
B = Blue = Bleu
Les valeurs sont comprises entre 0 et 255.
Exemple :
' 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.GetPixels
' 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)
Next
Next
IV-B. SetPixels▲
Crée l'image principale à partir un tableau de pixels avec les couleurs ARGB
L'image précédente est écrasée.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pPixels | Tableau de Byte | Tableau de points RGB |
Exemple :
' 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.GetPixels
' 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.SetPixels
lPixels
IV-C. SetBitmap▲
Crée l'image principale à partir d'un bitmap gdi32
Le bitmap source défini par pBitmap est copié, il faut donc ensuite le supprimer si nécessaire.
Voir GetBitmap pour un exemple d'utilisation.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pBitmap | Long | Identifiant d'un bitmap Gdi |
[pDelete] = Vrai | Boolean | Si Vrai, supprime le bitmap passé en paramètre. |
IV-D. GetBitmap▲
Sauvegarde l'image principale dans un bitmap gdi32
La fonction renvoie un bitmap Gdi32 qui est une copie de l'image principale.
Exemple :
' Le paramètre pDelete de SetBitmap doit être à Vrai pour supprimer le bitmap une fois transféré
' Sinon il y aurait une fuite de mémoire
' C'est le paramètre par défaut
lReturn =
oGdiOut.SetBitmap
(
oGdiIn.GetBitmap
(
))
IV-E. SetImageArray▲
Définit l'image principale à partir d'un tableau de byte
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pArray | Tableau de Byte | Données de l'image : - peut être un équivalent à la propriété PictureData d'un contrôle Access; - ou le 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 :
' Timages est le nom de la table
' data est le champ pièce-jointe
' id est un champ texte identifiant de l'image
oGdi.SetImageArray
DLookup
(
"data.filedata"
, "Timages"
, "id=""btnGIF"""
), True
IV-F. GetImageArray▲
Sauvegarde l'image principale dans un tableau de byte
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pArray | Tableau de Byte | Données de l'image. |
pEmf | Boolean | Format des données : - Bitmap si Faux - EMF si Vrai |
La fonction retourne un tableau de Byte contenant les données de l'image dans un format équivalent à la propriété PictureData d'un contrôle Access.
IV-G. LoadBitmapFromControl▲
Création de l'image principale à partir de l'image contenue dans un contrôle
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pCtrl | Control | Contrôle contenant une image |
IV-H. GetIPictureDisp▲
Renvoie l'image dans un objet IPictureDisp
Cet objet peut être utilisé pour une image du ruban par exemple.
V. Les fonctions de modification de l'image principale▲
V-A. ReplaceColor▲
Remplace une couleur de l'image par une autre.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pOldColor | Long | Ancienne couleur |
pNewColor | Long | Nouvelle couleur |
Exemple :
lReturn =
oGdi.ReplaceColor
(
vbWhite
, Me.Section
(
acDetail).BackColor
)
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 | Coordonnées du rectangle à remplir, ou toute l'image. |
Exemple :
lReturn =
oGdi.FillColor
(
vbWhite
, , , oGdi.ImageWidth
/
2
, oGdi.ImageHeight
/
2
)
V-C. 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 |
[pAntialise] = Faux | Boolean | Si vrai alors l'image est lissée Remarque : ce lissage n'est pas un vrai anti-aliasing, le résultat n'est pas toujours très bon. |
[pFixColor] = -1 | Long | Couleur à figer si antialiasing Permet de conserver une couleur de fond uni. |
Exemple :
lReturn =
oGdi.Resize
(
oGdi.ImageWidth
/
10
, oGdi.ImageHeight
/
10
)
V-D. Crop▲
Découpe l'image principale.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
[pLeft] = 0 | Long | Position à gauche |
[pTop] = 0 | Long | Position en haut |
[pWidth] = 0 | Long | Largeur |
[pHeight] = 0 | Long | Hauteur |
Exemple :
lReturn =
oGdi.Crop
(
0
, 0
, oGdi.ImageWidth
/
2
, oGdi.ImageHeight
/
2
)
V-E. Rotate▲
Rotation de l'image principale.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pAngle | Long | Angle de rotation en degrés |
[pBackColor] = -1 | Long | Couleur de fond de l'image. Cette couleur rempli les portions de l'image qui ne sont plus remplies après rotation. |
Exemple :
lReturn =
oGdi.Rotate
(
30
)
VI. Les fonctions de dessin▲
Ces fonctions dessinent sur l'image principale.
Le dessin tient compte des transformations définies par les fonctions World*.
Il est également possible de dessiner sur une image secondaire en utilisant des fonctions similaires dont le nom commence par ImageList.
VI-A. DrawPixel▲
Dessine un pixel.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pX | Long | Position horizontale du pixel |
pY | Long | Position verticale du pixel |
pColor | Long | Couleur du pixel |
Exemple :
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 | Position du premier point |
pX2,pY2 | Long | Position du deuxième point |
[pPenColor] = vbBlack | Long | Couleur de la ligne |
[pPenWidth] = 1 | Long | Epaisseur de la ligne |
[pDash] = False | Boolean | Pointillés si Vrai |
[pArrowLength] = 0 | Long | Taille des traits pour dessiner une flèche |
Exemple :
lReturn =
oGdi.DrawLine
(
0
, 0
, oGdi.ImageWidth
, oGdi.ImageHeight
, vbBlue
, 4
, True
)
VI-C. DrawRectangle▲
Dessine un rectangle.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pX1,pY1,pX2,pY2 | Long | Coordonnées du rectangle |
[pBackColor] = -1 | Long | Couleur de remplissage Laisser -1 pour un rectangle transparent. |
[pPenColor] = vbBlack | Long | Couleur de la ligne |
[pPenWidth] = 1 | Long | Epaisseur de la ligne |
[pDash] = False | Boolean | Pointillés si Vrai |
[pRegion] = "" | String | Nom de la région à créer avec les mêmes coordonnées |
Exemple :
' pBackColor = -1 siginifie 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 | Coordonnées du rectangle |
pX3 ,pY3 | Long | Taille de l'ellipse utilisé 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 | Epaisseur de la ligne |
[pDash] = False | Boolean | Pointillés si Vrai |
[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 | Position de l'ellipse |
[pType] = 0 | EGdi32TypeEllipse | 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 | Epaisseur de la ligne |
[pDash] = False | Boolean | Pointillés si Vrai |
[pStartAngle] = Null | Variant/Single | Angle de démarrage d'un arc en degré |
[pSweepAngle] = Null | 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 :
' 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 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 | Epaisseur de la ligne |
[pDash] = False | Boolean | Pointillés si Vrai |
[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 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 | Epaisseur de la ligne |
[pDash] = False | Boolean | Pointillés si Vrai |
[pRegion] = "" | String | Nom de la région à créer avec les mêmes coordonnées |
VI-H. DrawSVG▲
Dessine un chemin SVG.
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 : non gérés à ce jour.
z : ferme le chemin.
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 | Epaisseur de la ligne |
[pDash] = False | Boolean | Pointillés si Vrai |
[pRegion] = "" | String | Nom de la région à créer avec les mêmes coordonnées |
Exemple :
lReturn =
oGdi.DrawSVG
(
"M 20 20 h 50 L 100 100 Q 120 120 100 150 70 180 z"
)
VI-I. DrawText▲
Dessine du texte.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pText | String | Texte à écrire Peut contenir des retours à la ligne (vbCrLf) mais le texte sera alors automatiquement aligné en haut. |
pSize | Long | 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 | 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 | EGdi32HorzAlign | Alignement horizontal - HorzAlignLeft = 0 : Gauche - HorzAlignCenter = 1 : Centre - HorzAlignRight = 2 : Droite |
[pAlignVert] = VertAlignCenter | EGdi32VertAlign | Alignement vertical - VertAlignTop = 0 : Haut - VertAlignCenter = 1 : Centre - VertAlignBottom = 2 : Bas |
[pPenColor] = 0 | Long | Couleur du texte |
[pBackColor] = -1 | Long | Couleur de fond (-1 si transparent) |
[pItalic] = False | Boolean | Italique Vrai/Faux |
[pBold] = False | Boolean | Gras Vrai/Faux |
[pUnderline] = False | Boolean | Souligné Vrai/Faux |
[pStrikeOut] = False | Boolean | Barré Vrai/Faux |
[pAntialiase] = Faux | Boolean | Lisser le texte Vrai/Faux |
[pOnlyGetSize] = Faux | Boolean | Si vrai, n'écrit pas le texte sur l'image et renvoie la taille du texte dans pX1,pY1,pX2,pY2, pSize |
Exemple :
lReturn =
oGdi.DrawText
(
"TEST"
, 30
, "Arial"
, 0
, 0
, oGdi.ImageWidth
-
1
, oGdi.ImageHeight
-
1
, 0
, 0
, vbBlue
)
VI-J. DrawImage▲
Affiche une image de la liste d'images secondaires.
Voir les fonctions ImagesList* pour créer les images secondaires.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
pX1,pY1,[pX2],[pY2] | Long | Position de l'image Si pX2 et pY2 sont omis alors on conserve la taille de l'image Si pX2 ou pY2 sont omis alors on calcule la dimension manquante par rapport à l'autre en conservant le rapport hauteur/largeur. Si pImgSizeMode = Gdi32SizeModeAutoSize: pX1,pY1 : Position de l'image pX2 : Largeur de l'image pY2 : Hauteur de l'image Si pImgSizeMode = Gdi32SizeModeZoom ou Gdi32SizeModeStretch ou Gdi32SizeModeClip: 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] = Gdi32SizeModeZoom | EGdi32ImgSizeMode | Type d'affichage de l'image (Zoom par défaut) |
[pImgPictureAlignment] = Gdi32AlignCenter | EGdi32ImgPictureAlignment | Position de l'image (centrée par défaut) |
[pPercent]=255 | Integer | Pourcentage pour affichage transclucide (0:invisible;255:normal) |
[pAntialise] = Faux | Boolean | Si vrai alors l'image est lissée Remarque : ce lissage n'est pas un vrai anti-aliasing, le résultat n'est pas toujours très bon. |
[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. |
VIII. Les fonctions pour gérer la 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.
Utilisez ensuite la fonction DrawImage pour dessiner une de ces images sur l'image principale.
Paramètres :
VIII-A. ImageListNew▲
Crée une image secondaire vierge.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
pWidth | Long | Largeur de l'image |
pHeight | Long | Hauteur de l'image |
VIII-B. ImageListAdd▲
Ajoute une image secondaire à partir d'un fichier.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
[pFile]="" | String | Chemin du fichier de l'image Si aucun fichier n'est passé en paramètre alors on sauvegarde l'image en mémoire dans la liste d'images secondaires. |
[pWidth]=0 [pHeight]=0 |
Long | Taille de l'image pour redimensionnement lors du chargmement. Si pWidth et pHeight sont nulles toutes les deux l'image conserve sa taille Si seulement une des deux tailles est nulles alors l'autre est calculée en en conservant les proportions de l'image d'origine. |
[pAntialiase] = Faux | Boolean | Lisse l'image lors du redimensionnement si Vrai. Remarque : ce lissage n'est pas un vrai anti-aliasing, le résultat n'est pas toujours très bon. |
[pIcon]=Gdi32NoIcon | EGdi32IconType |
Gdi32NoIcon = Charge le fichier normalement Gdi32SmallIcon = Charge la grande icone associée au fichier Gdi32LargeIcon = Charge la grande icone associée au fichier |
VIII-C. ImageListAddBitmap▲
Ajoute une image secondaire à partir d'un bitmap gdi.
Le bitmap source est copié.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
pBitmap | Long | Identifiant d'un bitmap Gdi |
[pDelete]= True | Boolean | Si Vrai, supprime le bitmap source après l'avoir inséré dans la liste d'images. |
Exemple :
' Voir plus loin pour l'explication de ImageListGetBitmap
' Il faut supprimer le bitmap en mettant le paramètre pDelete de ImageListAddBitmap à Vrai (par défaut)
' Sinon il y a une fuite de mémoire, le bitmap temporaire n'étant jamais supprimé
lReturn =
oGdiOut.ImageListAddBitmap
(
"MonImage"
, oGdiIn.ImageListGetBitmap
(
"MonImage"
), True
)
VIII-D. ImageListAddRect▲
Ajoute une image secondaire à partir d'une portion de l'image principale.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
pX1,pY1,pX2,pY2 | Long | Coordonnées du rectangle à copier. |
VIII-E. ImageListAddFromControl▲
Ajoute une image secondaire à partir de l'image intégrée à un contrôle.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
pCtrl | Control | Contrôle contenant l'image à charger. |
VIII-F. ImageListAddFromArray▲
Ajoute une image secondaire à partir d'un tableau de byte.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
pArray | Tableau de Byte | Données de l'image : - peut être un équivalent à la propriété PictureData d'un contrôle Access; - ou le 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 :
' Timages est le nom de la table
' data est le champ pièce-jointe
' id est un champ texte identifiant de l'image
oGdi.ImageListAddFromArray
"IdImage"
, DLookup
(
"data.filedata"
, "Timages"
, "id=""btnGIF"""
), True
VIII-G. ImageListAddPictureMask▲
Ajoute une image secondaire à partir à partir d'un bitmap et d'un masque gdi32.
Le masque est un bitmap monochrome noir et blanc définissant la transparence de l'image.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
pPicture | Long | Identifiant d'un bitmap gdi32. |
pMask | Long | Identifiant d'un masque gdi32. |
[pBackColor] = vbWhite | Long | Couleur de fond de l'image. |
[pDelete] = True | Boolean | Si Vrai, le bitmap et le masque sont supprimés. |
VIII-H. ImageListGetBitmap▲
Renvoie le bitmap gdi32 d'une image secondaire.
Voir ImageListAddBitmap pour un exemple d'utilisation.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
VIII-I. ImageListExists▲
Teste si l'image secondaire existe.
La fonction renvoie Vrai si l'image est déjà dans la liste
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
VIII-J. ImageListDel▲
Supprime une image secondaire de la liste d'images.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
VIII-K. ImageListDelAll▲
Supprime toutes les images secondaires de la liste d'images.
VIII-L. ImageListClone▲
Clone une image secondaire de la liste d'images.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pNameSource | String | Identifiant de l'image source |
pNameDest | String | Identifiant de l'image destination |
VIII-M. ImageListWidth▲
Largeur d'une image secondaire.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
VIII-N. ImageListHeight▲
Hauteur d'une image secondaire.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
VIII-O. ImageListGetIPictureDisp▲
Renvoie l'image secondaire dans un objet IPictureDisp
Cet objet peut être utilisé pour une image du ruban.
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de l'image |
VIII-P. Fonctions de dessin / transformation▲
Les fonctions de dessin / transformation existent également pour les images secondaires.
Ces fonctions ont un préfixe ImageList et acceptent les même paramètres que les fonctions originales.
Le premier paramètre supplémentaire pImage est l'identifiant de l'image de la liste.
IX. Les fonctions de transformations▲
Ces fonctions appliquent une transformation au contexte d'affichage.
Ces transformations s'appliquent aux opérations de dessin effectuées sur l'image principale et la création de régions.
IX-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 |
pAppend | Boolean | Mettre à True pour ajouter cette transformation à la transformation active. Sinon elle remplace la transformation déjà définie. |
IX-B. WorldTranslate▲
Effectue une translation.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pdX | Single | Translation horizontale |
pdY | Single | Translation verticale |
pAppend | Boolean | Mettre à True pour ajouter cette transformation à la transformation active. Sinon elle remplace la transformation déjà définie. |
IX-C. WorldScale▲
Effectue une mise à l'échelle.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
psX | Single | Mise à l'échelle horizontale |
psY | Single | Mise à l'échelle verticale |
pAppend | Boolean | Mettre à True pour ajouter cette transformation à la transformation active. Sinon elle remplace la transformation déjà définie. |
IX-D. WorldReset▲
Annule les transformations.
IX-E. WorldPush▲
Sauvegarde les transformations.
Restaurez avec WolrdPop.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
[pMatrix] = "default" | String | Identifiant de la matrice à sauvegarder. |
IX-F. WorldPop▲
Restaure les transformations préalablement sauvegardées avec WorldPush.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
[pMatrix] = "default" | String | Identifiant de la matrice à restaurer. |
IX-G. WorldTransformPoint▲
Transforme les coordonnées d'un point.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pX, pY | Long | Coordonnées du texte à transformer. |
[pMatrix] = "default" | String | Identifiant de la matrice à utiliser pour la transformation. |
X. Les fonctions de restitution de l'image principale à l'écran▲
X-A. RepaintControl▲
Injecte l'image dans un contrôle.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pControl | Image | Contrôle dans lequel est injecté l'image |
[pResizeBefore]=False | Boolean | Si Vrai, redimensionne l'image avant |
[pResizeAntialise]=False | Boolean | Anti-aliasing lors du redimensionnement Remarque : ce lissage n'est pas un vrai anti-aliasing, le résultat n'est pas toujours très bon. |
[pUseEMF]=False | Boolean | Pour ACCESS uniquement : Utilisation du type d'image EMF A tester pour améliorer la qualité de l'image dessinée. |
oGdi.RepaintControl
Me.Image0
,True
,True
X-B. RepaintControlNoFormRepaint▲
Injecte l'image dans un contrôle, mais ne la dessine que temporairement.
Cette fonction peut être utilisée pour réduire les scintillements (ou "flash") à l'écran.
Il peut y avoir des légers décalages d'un ou deux pixels, qu'on peut essayer de corriger avec la fonction FastRepaintSetCorrection et/ou en retirant les bordures de l'image.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pControl | Image | Contrôle dans lequel est injecté l'image |
[pResizeBefore]=False | Boolean | Si Vrai, redimensionne l'image avant |
[pResizeAntialise]=False | Boolean | Anti-aliasing lors du redimensionnement Remarque : ce lissage n'est pas un vrai anti-aliasing, le résultat n'est pas toujours très bon. |
[pUseEMF]=False | Boolean | Pour ACCESS uniquement : Utilisation du type d'image EMF A essayer pour améliorer la qualité de l'image dessinée. |
X-C. FastRepaint▲
Dessine directement sur le formulaire.
L'affichage est plus rapide mais temporaire.
Il peut y avoir des légers décalages d'un ou deux pixels, qu'on peut essayer de corriger avec la fonction FastRepaintSetCorrection et/ou en retirant les bordures de l'image.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pImgCtrl | Image | Contrôle déterminant l'emplacement de l'image |
[pAntialiase] = Faux | Boolean | Lisse l'image si Vrai. Remarque : ce lissage n'est pas un vrai anti-aliasing, le résultat n'est pas toujours très bon. |
[phDc] = 0 | Long | Handle d'un device contexte si connu. |
[phWnd] = 0 | Long | Handle d'une fenêtre si connu. |
X-D. FastRepaintSetCorrection▲
Corrections pour la fonction FastRepaint.
*Dest pour correction sur le formulaire.
*Src pour correction sur l'image dessiné.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pLeftDest, pLeftSrc | Long | Correction à gauche |
pTopDest, pTopSrc | Long | Correction à droite |
pWidthDest, pWidthSrc | Long | Correction de largeur |
pHeightDest, pHeightSrc | Long | Correction de hauteur |
X-E. FastRepaintSetClipControl▲
Définit l'emplacement à redessiner avec la fonction FastRepaint.
Permet de placer des contrôles sur l'images et de ne pas dessiner par dessus si on utilise la fonction FastRepaint.
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 | Boolean | Si Vrai, le contrôle spécifié délimite un rectangle qui sera redessiné à l'appel de la fonction FastRepaint. Si Faux, le contrôle spécifié délimite un rectangle qui ne sera pas redessiné. |
pCorrectLeft | Long | Correction à gauche en pixels |
pCorrectTop | Long | Correction en haut en pixels |
pCorrectRight | Long | Correction à droite en pixels |
pCorrectBottom | Long | Correction en bas en pixels |
X-F. FastRepaintSetClipRectangle▲
Définit l'emplacement à redessiner avec la fonction FastRepaint.
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 | Coordonnées du rectangle à dessiner. En pixels par rapport à l'image principale. |
pInclude | Boolean | Si Vrai, le rectangle sera redessiné à l'appel de la fonction FastRepaint. Si Faux, le rectangle ne sera pas redessiné. |
pCorrectLeft | Long | Correction à gauche en pixels |
pCorrectTop | Long | Correction en haut en pixels |
pCorrectRight | Long | Correction à droite en pixels |
pCorrectBottom | Long | Correction en bas en pixels |
X-G. FastRepaintSetClipRegion▲
Définit le rectangle entourant une région comme l'emplacement à redessiner avec la fonction FastRepaint.
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 | Identifiant de la région à dessiner. |
pInclude | Boolean | Si Vrai, le rectangle sera redessiné à l'appel de la fonction FastRepaint. Si Faux, le rectangle ne sera pas redessiné. |
pCorrectLeft | Long | Correction à gauche en pixels |
pCorrectTop | Long | Correction en haut en pixels |
pCorrectRight | Long | Correction à droite en pixels |
pCorrectBottom | Long | Correction en bas en pixels |
X-H. FastRepaintResetClip▲
Réinitialise l'emplacement à redessiner avec la fonction FastRepaint.
Après l'appel de cette fonction, l'image entière est à nouveau dessinée.
XI. Les fonctions pour gérer les régions▲
XI-A. CreateRegionEllipse▲
Ajoute une région elliptique.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Identifiant de la region |
pX1,pY1,pX2,pY2 | Long | Position de l'ellipse |
[pType] = TypeEllipseRectangle | EGdi32TypeEllipse | 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 |
XI-B. CreateRegionPolygon▲
Ajoute une région polygonale.
Pensez à fermer le polygone pour créer une région.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Identifiant de la region |
pPoints | Variant | Tableau de points formant le polygone Array(X1,Y1,X2,Y2,X3,Y3,...) |
XI-C. CreateRegionRect▲
Ajoute une région rectangulaire.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Identifiant de la region |
pX1,pY1 | Long | Point Haut-Gauche du rectangle |
pX2,pY2 | Long | Point Bas-Droite du rectangle |
XI-D. CreateRegionRoundRect▲
Ajoute une région rectangulaire avec coins arrondis.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Identifiant de la region |
pX1,pY1 | Long | Point Haut-Gauche du rectangle |
pX2,pY2 | Long | Point Bas-Droite du rectangle |
pX3,pY3 | Long | Taille de l'ellipse utilise pour les coins |
XI-E. CreateRegionCurve▲
Ajoute une région à partir d'une ou plusieurs courbes de bézier.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Identifiant de la region |
pPoints | Variant | Tableau de points formant la courbe: Array(X1,Y1,X2,Y2,X3,Y3,...). Necessite 1 point de depart + 3 points par courbe. |
XI-F. CreateRegionSVG▲
Ajoute une région à partir d'un chemin SVG.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Identifiant de la region |
pPath | String | Chemin au format SVG. Voir la fonction DrawSVG pour plus d'informations. |
XI-G. DeleteRegion▲
Supprime une région.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Identifiant de la region à supprimer |
XI-H. DeleteAllRegions▲
Supprime toutes les régions spécifiées.
Paramètre | Type | Explication |
---|---|---|
[pRegion]="*" | String | Identifiant des regions à supprimer, peut contenir un joker (*) |
XI-I. FrameRegion▲
Dessine un trait qui encadre la région.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Identifiant de la region |
[pPenColor] = vbBlack | Long | Couleur du trait |
[pPenWidth] = 1 | Long | Epaisseur du trait |
XI-J. FillRegion▲
Remplit une region d'une couleur.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Identifiant de la region |
[pColor] = vbBlack | Long | Couleur de remplissage |
XI-K. HatchRegion▲
Hachure une région.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Identifiant de la region |
[pColor] = vbBlack | Long | Couleur de remplissage |
[pBackColor] = -1 | Long | Deuxième couleur pour le fond |
[pStyle] = HatchStyleHorizontal | EGdi32HatchStyle | Type de hachures |
XI-L. GetRegionXY▲
Identifie la region située sur un point.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pX | Long | Position X du point |
pY | Long | Position Y du point |
[pInclude] | Variant | Tableau de régions à inclure. L'utilisation de joker (*) est possible. |
[pExclude] | Variant | Tableau de régions à exclure. L'utilisation de joker (*) est possible. |
[pControl] | Variant | Contrôle utilisé pour convertir les coordonnées de twips vers pixels. |
La fonction renvoie le nom de la région située sur le point précisé.
Exemple :
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 pControl
lRegion =
oGdi.GetRegionXY
(
X, Y, , ,Me.Image0
)
End
Sub
XI-M. PointInRegion▲
Teste si un point est dans une region.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pX | Long | Position X du point |
pY | Long | Position Y du point |
pRegion | String | Nom de la région à tester |
La fonction renvoie Vrai si le point est dans la région précisée en paramètre.
XI-N. GetRegionRect▲
Coordonnées rectangulaires d'une région.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Identifiant de la région. |
pX1, pY1, pX2, pY2 | Long | Coordonnées du rectangle contenant la région. |
XI-O. RegionExists▲
Teste si une région existe.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Nom de la région à tester |
La fonction renvoie Vrai si la région existe.
XI-P. 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. |
pRegion2 | String | Nom de la deuxième région |
pCombineMode | EGdi32CombineMode | Mode de combinaison |
XI-Q. CreateRegionFromColor▲
Ajoute une région définie par la couleur des points.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Nom de la région à créer |
[pColor]=-1 | Long | Couleur déterminant la région |
[pIncludeColor]=False | Boolean | - Vrai : La région contient les points de couleur pColor. - Faux : La région contient les points de couleur différente de pColor. |
[pPointX]=-1, [pPointY]=-1 | Long | Si renseigné, seuls les points adjacents sont traités (à la manière du pot de peinture de paint) |
XI-R. ScaleRegion▲
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 |
XI-S. TranslateRegion▲
Déplace une région.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Nom de la région |
pdX, pdY | Long | Nombre de pixels de déplacement |
XI-T. RotateRegion▲
Applique une rotation à une région.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Nom de la région |
pAngle | Single | Angle en degré |
[pCenter] = True | Booléen | Si vrai, le rectangle contenant la région est recentré après rotation |
XI-U. TransformRegion▲
Trasforme une région.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion | String | Nom de la région |
[pMatrix] = "" | String | Identifiant d'une matrice sauvegardée avec WorldPush. Ou matrice courante si non précisé. |
XI-V. RegionsIntersect▲
Teste si deux régions ont une intersection.
La fonction renvoie Vrai si les deux régions ont une intersection.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pRegion1 | String | Nom de la première région |
pRegion2 | String | Nom de la deuxième région Si ce paramètre est laissé vide, il sera renseigné avec la première région trouvée qui a une intersection avec pRegion1 |
XI-W. 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 |
XI-X. SetFormRegion▲
Limite l'affichage de formulaire a une région.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pForm | Formulaire | Le formulaire à limiter |
pRegion | String | Nom de la région |
[pCtrlRef]=Nothing | Image | Contrôle image de référence A utiliser si la région a été créée par rapport à l'image |
[pInverseRegion]=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 |
XI-Y. ResetFormRegion▲
Rétablit l'affichage du formulaire complet.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pForm | Formulaire | Le formulaire à rétablir |
XII. Sauvegarde de l'image principale en mémoire▲
XII-A. KeepImage▲
Sauvegarde l'image principale en mémoire
Paramètres :
Paramètre | Type | Explication |
---|---|---|
[PImage]="Default" | String | Nom de la sauvegarde |
L'image principale est sauvegardée en mémoire, prête à être rétablie avec la fonction ResetImage.
XII-B. ResetImage▲
Rétablit l'image principale de la mémoire
Paramètres :
Paramètre | Type | Explication |
---|---|---|
[PImage]="Default" | String | Nom de la sauvegarde |
XII-C. ImageExists▲
Test si une image principale sauvegardée existe en mémoire.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
[PImage]="Default" | String | Nom de la sauvegarde à tester |
XII-D. DeleteImage▲
Supprime une image principale sauvegardée en mémoire.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
[PImage]="Default" | String | Nom de la sauvegarde à supprimer |
XII-E. DeleteAllImages▲
Supprime toutes les images principales sauvegardées en mémoire.
Paramètres :
XII-F. GetImageBitmap▲
Renvoie le bitmap gdi d'une image principale sauvegardée en mémoire.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
[PImage]="Default" | String | Nom de la sauvegarde |
XIII. Gestion des textures▲
Utilisez ensuite la propriété FillTexture pour choisir la texture à utiliser.
XIII-A. TextureAddFromFile▲
Ajoute une texture à partir d'un fichier.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de la texture |
pFile | String | Chemin du fichier de la texture |
XIII-B. TextureAddFromImage▲
Ajoute une texture à partir d'une image secondaire.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de la texture |
pImgName | String | Identifiant de l'image secondaire contenant la texture |
XIII-C. TextureAddFromControl▲
Ajoute une texture à partir de l'image integrée a un contrôle.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de la texture |
pCtrl | Control | Contrôle contenant la texture |
XIII-D. TextureDel▲
Supprime une texture.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de la texture |
XIII-E. TextureTranslate▲
Déplace une texture.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de la texture |
pDx, pDy | Long | Deplacements en pixels |
XIII-F. TextureWidth▲
Largeur une texture.
Renvoie la largeur en pixel.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de la texture |
XIII-G. TextureHeight▲
Hauteur une texture.
Renvoie la hauteur en pixel.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pName | String | Identifiant de la texture |
XIV. Les fonctions de conversion▲
XIV-A. ImgToCtrlX et ImgToCtrlY▲
Converti depuis les coordonnées image vers les coordonnées contrôle
On donne des pixels en entrée, on reçoit des points (Excel) ou Twips (Access) en sortie.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pX ou pY | Long | Abcisse ou ordonnées à convertir |
pImgCtrl | Image | Contrôle Image à utiliser pour la conversion. |
[pDecalage] = True | Boolean | Calcul avec décalage (Position de l'image dans le contrôle) Définir à Vrai pour convertir une position, à Faux pour convertir une taille. |
XIV-B. CtrlToImgX et CtrlToImgY▲
Converti depuis les coordonnées contrôle vers les coordonnées image
On donne des points (Excel) ou Twips (Access) en entrée, on reçoit des pixels en sortie.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pX ou pY | Long | Abcisse ou ordonnées à convertir |
pImgCtrl | Image | Contrôle Image à utiliser pour la conversion. |
[pDecalage] = True | Boolean | Calcul avec décalage (Position de l'image dans le contrôle) Définir à Vrai pour convertir une position, à Faux pour convertir une taille. |
XIV-C. PointsToPixelsX et PointsToPixelsY▲
Converti les Points (Excel) ou Twips (Access) en Pixels
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pPointsX pPointsY |
Long | Valeur à convertir |
La fonction retourne la valeur convertie en Pixels
XIV-D. PixelToPointsX et PixelToPointsY▲
Converti les Pixels en Points (Excel) ou en Twips (Access)
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pPixelsX pPixelsY |
Long | Valeur à convertir |
La fonction retourne la valeur convertie en Points (Excel) ou en Twips (Access)
XV. Les autres fonctions utiles▲
XV-A. GetPixel▲
Renvoie la couleur d'un point
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pX,pY | Long | Coordonnées du point |
la fonction renvoie la couleur du point dans un Long.
Exemple :
Private
Sub
Image0_MouseMove
(
Button As
Integer
, Shift As
Integer
, X As
Single
, Y As
Single
)<
br/>
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
XV-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 |
XV-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 RepaintControlNoFormRepaint à la place de la fonction RepaintControl 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 :
' 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
XV-D. SetDoubleBufferXP▲
Permet de réduire le scintillement de l'image (pour WinXP/Acc2003)
Remarque : Utiliser la fonction RepaintControlNoFormRepaint à la place de la fonction RepaintControl 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 :
' 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
XV-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 |
' 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
XV-F. FontSizeToPixel▲
Conversion taille police en pixel
Convertit une taille de police de caractères en pixel pour la fonction DrawText.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pSize | Long | Taille de police |
[pCtrlRef]=Nothing | Control | Contrôle de référence |
XV-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 | Taille en pixel |
[pCtrlRef]=Nothing | Control | Contrôle de référence |
XV-H. GetUserFormHandle▲
Identifiant d'un userform
Pour Excel.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pForm | Long | Objet formulaire |
pClientArea | Boolean | Si Faux, la fonction renvoie l'identifiant du formulaire Si Vrai, la fonction renvoie l'identifiant de la sous-fenêtre sur laquelle on dessine |
XV-I. GetClientHandle▲
Identifiant de la sous-fenêtre sur laquelle on dessine (=section).
Pour Access.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pImgCtrl | Image | Objet image contenu dans la section de laquelle on veut l'identifiant. |
XV-J. GetControlSize▲
Lecture de la position d'un contrôle en pixels.
Paramètres :
Paramètre | Type | Explication |
---|---|---|
pCtrl | Control | Le contrôle. |
pX1,pY1,pX2,pY2 | Long | 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. |
Renvoit le décalage en pixel de l'image dans le contrôle.
XVI. Les propriétés▲
XVI-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.
XVI-B. RefControl▲
Contrôle de référence pour coordonnées passées en points/twips
Type Control en Lecture/Ecriture.
Si RefControl est défini, les fonctions acceptent des
coordonnées passées en Twips (pour Access) ou en Points (Pour Excel).
Pour annuler et repasser en pixels, affectez Nothing à cette propriété.
Exemple :
' 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
XVI-C. PenAlignMode▲
Alignement du crayon
Type Long en Lecture/Ecriture.
Voir énumération EGdi32PenAlignMode
S'applique aux fonctions de dessin (rectangle, polygone, ellipse, ...).
XVI-D. WrapX et WrapY▲
Décalage d'une image avec enroulement.
Type Long en Lecture/Ecriture.
S'applique aux fonctions DrawImage et DrawBitmap.
Attention : on ne peut pas utiliser WrapX et WrapY en même temps.
XVI-E. LineCap▲
Début et fin des traits.
Type Long en Lecture/Ecriture.
Voir énumération EGdi32LineCap
S'applique aux fonctions de dessin.
XVI-F. FillTexture▲
Texture de remplissage.
Type String en Lecture/Ecriture.
S'applique aux fonctions de dessin (y compris des textes), ainsi qu'au remplissage de région (FillRegion).
XVI-G. IconBackColor▲
Couleur de fond des icones.
Type Long en Lecture/Ecriture.
S'applique aux fonctions de chargement d'image : OpenFile et ImageListAdd.
XVI-H. LastTextBottom et LastTextRight▲
Position en bas et à droite du dernier texte écrit.
Type Long en Lecture/Ecriture.
LastTextRight n'est correct que si le texte est écrit avec un alignement à gauche.
XVI-I. MaxTextSize, MinTextSize et LastTextSize▲
Taille du texte ajusté.
Type Long en Lecture/Ecriture.
Si MinTextSize ou MaxTextSize 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é.
XVI-J. DrawClipRegion▲
Region limitant le dessin.
Type String en Lecture/Ecriture.
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.
XVI-K. FastRepaintCompatible▲
Dessin rapide identique à celui d'Access.
Type Booléen en Lecture/Ecriture.
Lors d'un affichage en mode Zoom ou Etendu, il peut y a avoir une différence de rendu entre FastRepaint (ou RepaintControlNoFastRepaint) et RepaintControl.
Mettre ce paramètre à Vrai (=True) pour dessiner de manière identique.
XVII. Conclusion▲
La librairie gdi32.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!
XVIII. Les téléchargements▲
Télécharger la classe au format texte
Ensuite insérez le contenu du fichier dans un module de classe.
Télécharger la base d'exemples au format ACCESS 2000
Télécharger la base d'exemples au format EXCEL 2000