Visual Basic .NET Language
GDI +
Recherche…
Créer un objet graphique
Il existe trois façons de créer un objet graphique
- De l' événement de peinture
Chaque fois que le contrôle est redessiné (redimensionné, actualisé ...), cet événement est appelé. Utilisez cette méthode si vous souhaitez que le contrôle dessine de manière cohérente sur le contrôle.
'this will work on any object's paint event, not just the form
Private Sub Form1_Paint(sender as Object, e as PaintEventArgs) Handles Me.Paint
Dim gra as Graphics
gra = e.Graphics
End Sub
- Créer un graphique
Ceci est le plus souvent utilisé lorsque vous souhaitez créer un graphique unique sur le contrôle, ou vous ne voulez pas que le contrôle se repeigne
Dim btn as New Button
Dim g As Graphics = btn.CreateGraphics
- À partir d'un graphique existant
Utilisez cette méthode pour dessiner et modifier un graphique existant
'The existing image can be from a filename, stream or Drawing.Graphic
Dim image = New Bitmap("C:\TempBit.bmp")
Dim gr As Graphics = Graphics.FromImage(image)
Dessiner des formes
Pour commencer à dessiner une forme, vous devez définir un objet stylo. Le Pen
accepte deux paramètres:
- Couleur du stylo ou pinceau
- Largeur du stylo
L'objet Plume est utilisé pour créer un contour de l'objet que vous souhaitez dessiner
Après avoir défini le stylet, vous pouvez définir des propriétés de stylet spécifiques
Dim pens As New Pen(Color.Purple)
pens.DashStyle = DashStyle.Dash 'pen will draw with a dashed line
pens.EndCap = LineCap.ArrowAnchor 'the line will end in an arrow
pens.StartCap = LineCap.Round 'The line draw will start rounded
'*Notice* - the Start and End Caps will not show if you draw a closed shape
Ensuite, utilisez l'objet graphique que vous avez créé pour dessiner la forme
Private Sub GraphicForm_Paint(sender As Object, e As PaintEventArgs) Handles MyBase.Paint
Dim pen As New Pen(Color.Blue, 15) 'Use a blue pen with a width of 15
Dim point1 As New Point(5, 15) 'starting point of the line
Dim point2 As New Point(30, 100) 'ending point of the line
e.Graphics.DrawLine(pen, point1, point2)
e.Graphics.DrawRectangle(pen, 60, 90, 200, 300) 'draw an outline of the rectangle
Par défaut, la largeur du stylet est égale à 1
Dim pen2 as New Pen(Color.Orange) 'Use an orange pen with width of 1
Dim origRect As New Rectangle(90, 30, 50, 60) 'Define bounds of arc
e.Graphics.DrawArc(pen2, origRect, 20, 180) 'Draw arc in the rectangle bounds
End Sub
Remplir des formes
Graphics.FillShapes dessine une forme et la remplit avec la couleur donnée. Les formes de remplissage peuvent utiliser
Outil
Brush
- pour remplir une forme avec une couleur unieDim rect As New Rectangle(50, 50, 50, 50) e.Graphics.FillRectangle(Brushes.Green, rect) 'draws a rectangle that is filled with green e.Graphics.FillPie(Brushes.Silver, rect, 0, 180) 'draws a half circle that is filled with silver
HatchBrush
Tool - pour remplir la forme avec un motif
Dim hBrush As New HatchBrush(HatchStyle.ZigZag, Color.SkyBlue, Color.Gray)
'creates a HatchBrush Tool with a background color of blue, foreground color of gray,
'and will fill with a zigzag pattern
Dim rectan As New Rectangle(100, 100, 100, 100)
e.Graphics.FillRectangle(hBrush, rectan)
LinearGradientBrush
- pour remplir une forme avec un dégradéDim lBrush As New LinearGradientBrush(point1, point2, Color.MediumVioletRed, Color.PaleGreen) Dim rect As New Rectangle(50, 50, 200, 200) e.Graphics.FillRectangle(lBrush, rect)
TextureBrush
- pour remplir la forme avec une image
Vous pouvez choisir une image parmi les ressources, une bitmap déjà définie ou un nom de fichier
Dim textBrush As New TextureBrush(New Bitmap("C:\ColorPic.jpg"))
Dim rect As New Rectangle(400, 400, 100, 100)
e.Graphics.FillPie(textBrush, rect, 0, 360)
L' Hatch Brush Tool
et LinearGradientBrush
importent tous deux l'instruction suivante: Imports System.Drawing.Drawing2D
Texte
Pour dessiner du texte sur le formulaire, utilisez la méthode DrawString
Lorsque vous dessinez une chaîne, vous pouvez utiliser l'une des 4 brosses répertoriées ci-dessus.
Dim lBrush As New LinearGradientBrush(point1, point2, Color.MediumVioletRed, Color.PaleGreen)
e.Graphics.DrawString("HELLO", New Font("Impact", 60, FontStyle.Bold), lBrush, New Point(40, 400))
'this will draw the word "Hello" at the given point, with a linearGradient Brush
Comme vous ne pouvez pas définir la largeur ou la hauteur du texte, utilisez l' Measure Text
pour vérifier la taille du texte.
Dim lBrush As New LinearGradientBrush(point1, point2, Color.MediumVioletRed, Color.PaleGreen)
Dim TextSize = e.Graphics.MeasureString("HELLO", New Font("Impact", 60, FontStyle.Bold), lBrush)
'Use the TextSize to determine where to place the string, or if the font needs to be smaller
Ex: Vous devez dessiner le mot "Test" en haut du formulaire. La largeur du formulaire est de 120. Utilisez cette boucle pour réduire la taille de la police jusqu'à ce qu'elle rentre dans la largeur des formulaires.
Dim FontSize as Integer = 80
Dim TextSize = e.graphics.measeString("Test", New Font("Impact",FontSize, FontStyle.Bold), new Brush(colors.Blue, 10)
Do while TextSize.Width >120
FontSize = FontSize -1
TextSize = e.graphics.measeString("Test", New Font("Impact",FontSize, FontStyle.Bold), new Brush(colors.Blue, 10)
Loop