Programmation Visual Basic .NET/GDI+
Objet graphique
[modifier | modifier le wikicode]Un objet System.Drawing.Graphics
représente une surface de dessin.
Pour obtenir un tel objet dans un contrôle PictureBox, utiliser la propriété .Graphics
du paramètre PaintEventArgs
dans l'évènement Paint()
de la PictureBox
.
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
Using g as Graphics = e.Graphics
' g permet ensuite de dessiner
End Using
End Sub
Pour charger une image puis dessiner dessus, utiliser Graphics.FromImage()
:
Using MonImage As Bitmap = Bitmap.FromFile("C:\Temp\MonImage.BMP")
Using g as Graphics = Graphics.FromImage(MonImage)
' g permet ensuite de dessiner
End Using
End Using
La méthode .Save() peut être utilisée pour sauvegarder le bitmap dans un fichier ou un Stream
(flux). Remarque : Bitmap
conserve le fichier image ouvert, il faut donc copier le fichier dans un MemoryStream
pour ne pas avoir cette liaison.
Méthodes de dessin
[modifier | modifier le wikicode]des méthodes comme Graphics.DrawLine
et Graphics.DrawString
pour tracer lignes et textes.
Mesures
[modifier | modifier le wikicode]Graphics.MeasureString
permet de mesurer la hauteur ou largeur d'une partie de texte, affichable avec .DrawString
.
Échelle
[modifier | modifier le wikicode]Échelle simple
[modifier | modifier le wikicode]Utiliser la propriété Graphics.PageUnit
comme une façon simple de changer les coordonnées du système.
Coordonnées des systèmes World, Page et Device
[modifier | modifier le wikicode]Les coordonnées d'un système VB.NET font partie de celles d'un World
. Par défaut ces unités sont en pixels, mais on peut les redéfinir.
La transformation de World
convertit ses coordonnées en celles d'une Page
. Ces dernières expriment la distance visible sur le moniteur ou imprimée sur du papier.
La transformation de Page
convertit ses coordonnées en celles d'une Device
. Cela permet à l'image de rester la même quel que soit le périphérique sur laquelle elle est envoyée.
Il est possible de définir une matrice de traduction pour convertir les points spécifié dans le résultat final. Cette transformation peut traduire (offset), échelle, rotation, inclinaison dans le résultat, elle est appelée transformation affine.
Convertir depuis Twips
[modifier | modifier le wikicode]Les précédentes versions de Visual Basic utilisaient Twips comme unité de mesure : 1,440 Twips = 1 pouce. Toutefois, VB.NET utilise plutôt les pixels. Pour convertir les Twips en pixels dans un objet graphique, il faut connaître :
XTwips
qui renvoie la mesure en Twips.XPixels
qui renvoie celle en pixels.
Si g
est l'objet Graphics
approprié :
XPixels = XTwips * g.DpiX / 1440
Utiliser g.DpiY
pour calcuer les coordonnées de l'axe des Y.