Recherche…


Créer un objet graphique

Il existe trois façons de créer un objet graphique

  1. 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
  1. 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
  1. À 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:

  1. Couleur du stylo ou pinceau
  2. 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

  1. Outil Brush - pour remplir une forme avec une couleur unie

    Dim 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
    
  2. 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)
  1. 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)
    
  2. 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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow