Zoeken…


Creëer grafisch object

Er zijn drie manieren om een grafisch object te maken

  1. Van het Paint Event

Telkens wanneer het besturingselement opnieuw wordt getekend (aangepast, vernieuwd ...), wordt deze gebeurtenis aangeroepen, gebruikt u deze manier als u wilt dat het besturingselement consistent gebruik maakt van het besturingselement

   '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. Maak een afbeelding

Dit wordt meestal gebruikt wanneer u een eenmalige afbeelding op het besturingselement wilt maken of als u niet wilt dat het besturingselement zichzelf opnieuw schildert

   Dim btn as New Button
   Dim g As Graphics = btn.CreateGraphics
  1. Van een bestaande afbeelding

Gebruik deze methode wanneer u een bestaande afbeelding wilt tekenen en wijzigen

   '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)

Vormen tekenen

Om een vorm te tekenen, moet u een penobject definiëren. De Pen accepteert twee parameters:

  1. Kleur pen of penseel
  2. Penbreedte

Het penobject wordt gebruikt om een omtrek te maken van het object dat u wilt tekenen

Na het definiëren van de pen kunt u specifieke peneigenschappen instellen

   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

Gebruik vervolgens het grafische object dat u hebt gemaakt om de vorm te tekenen

  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

Standaard is de breedte van de pen gelijk aan 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

Vormen vullen

Graphics.FillShapes tekent een vorm en vult deze in met de gegeven kleur. Vulvormen kunnen gebruiken

  1. Brush - om de vorm te vullen met een effen kleur

    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 - om de vorm met een patroon te vullen

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 - om de vorm met een verloop te vullen

    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 - om de vorm met een afbeelding te vullen

U kunt een afbeelding kiezen uit bronnen, een al gedefinieerde bitmap of een bestandsnaam

   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)

Zowel de Hatch Brush Tool als LinearGradientBrush importeren de volgende instructie: Imports System.Drawing.Drawing2D

Tekst

Gebruik de DrawString methode om tekst op het formulier te tekenen

Wanneer je een string tekent, kun je elk van de 4 hierboven genoemde penselen gebruiken

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

Aangezien u de breedte of hoogte van de tekst niet kunt definiëren, gebruikt u Measure Text om de tekstgrootte te controleren

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

Bijv: U moet het woord "Test" bovenop het formulier tekenen. De breedte van het formulier is 120. Gebruik deze lus om de lettergrootte te verkleinen totdat deze in de breedte van het formulier past

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow