Suche…


Grafikobjekt erstellen

Es gibt drei Möglichkeiten, ein Grafikobjekt zu erstellen

  1. Aus dem Paint Event

Jedes Mal, wenn das Steuerelement neu gezeichnet (skaliert, aktualisiert ...) wird, wird dieses Ereignis aufgerufen. Verwenden Sie diesen Weg, wenn das Steuerelement konsistent auf das Steuerelement zugreifen soll

   '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. Grafik erstellen

Dies wird meistens verwendet, wenn Sie eine einmalige Grafik im Steuerelement erstellen möchten oder das Steuerelement nicht selbst neu zeichnen soll

   Dim btn as New Button
   Dim g As Graphics = btn.CreateGraphics
  1. Aus einer vorhandenen Grafik

Verwenden Sie diese Methode, wenn Sie eine vorhandene Grafik zeichnen und ändern möchten

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

Formen zeichnen

Zum Zeichnen einer Form müssen Sie ein Stiftobjekt definieren. Der Pen akzeptiert zwei Parameter:

  1. Stiftfarbe oder Pinsel
  2. Stiftbreite

Mit dem Stiftobjekt wird eine Kontur des Objekts erstellt, das Sie zeichnen möchten

Nach dem Definieren des Stiftes können Sie bestimmte Stifteigenschaften festlegen

   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

Verwenden Sie dann das von Ihnen erstellte Grafikobjekt, um die Form zu zeichnen

  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

Standardmäßig entspricht die Breite des Stifts 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

Formen füllen

Graphics.FillShapes zeichnet eine Form und füllt sie mit der angegebenen Farbe aus. Füllformen können verwenden

  1. Brush - Füllt die Form mit einer Volltonfarbe

    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 Werkzeug - um die Form mit einem Muster zu füllen

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 - LinearGradientBrush die Form mit einem Farbverlauf

    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 - um die Form mit einem Bild zu füllen

Sie können ein Bild aus Ressourcen, einer bereits definierten Bitmap oder aus einem Dateinamen auswählen

   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)

Das Hatch Brush Tool und LinearGradientBrush importieren die folgende Anweisung: Importiert System.Drawing.Drawing2D

Text

Verwenden DrawString zum Zeichnen von Text in das Formular die DrawString Methode

Wenn Sie eine Zeichenfolge zeichnen, können Sie einen der vier oben aufgelisteten Pinsel verwenden

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

Da Sie die Breite oder Höhe des Textes nicht definieren können, überprüfen Sie die Textgröße mithilfe von Text Measure Text

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

Beispiel: Sie müssen das Wort "Test" auf das Formular zeichnen. Die Breite des Formulars beträgt 120. Verwenden Sie diese Schleife, um die Schriftgröße zu verringern, bis sie in die Formularbreite passt

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow