Programmation Visual Basic .NET/GDI+

Objet graphique

modifier

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

des méthodes comme Graphics.DrawLine et Graphics.DrawString pour tracer lignes et textes.

Mesures

modifier

Graphics.MeasureString permet de mesurer la hauteur ou largeur d'une partie de texte, affichable avec .DrawString.

Échelle

modifier

Échelle simple

modifier

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

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

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.