Visual Basic .NET Language
GDI +
Suche…
Grafikobjekt erstellen
Es gibt drei Möglichkeiten, ein Grafikobjekt zu erstellen
- 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
- 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
- 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:
- Stiftfarbe oder Pinsel
- 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
Brush
- Füllt die Form mit einer VolltonfarbeDim 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
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)
LinearGradientBrush
-LinearGradientBrush
die Form mit einem FarbverlaufDim 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
- 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