Sök…


Skapa grafiskt objekt

Det finns tre sätt att skapa ett grafikobjekt

  1. Från Paint Event

Varje gång kontrollen ritas om (ändra storlek, uppdateras ...) kallas denna händelse, använd det här sättet om du vill att kontrollen konsekvent ska dra på kontrollen

   '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. Skapa grafik

Detta används oftast när du vill skapa en engångsbild på kontrollen, eller om du inte vill att kontrollen ska måla om sig själv

   Dim btn as New Button
   Dim g As Graphics = btn.CreateGraphics
  1. Från en befintlig grafik

Använd den här metoden när du vill rita och ändra en befintlig grafik

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

Rita former

För att börja rita en form måste du definiera en penna objekt The Pen accepterar två parametrar:

  1. Penna färg eller borste
  2. Pennbredd

Pennaobjektet används för att skapa en kontur av det objekt du vill rita

Efter att du har definierat pennan kan du ställa in specifika pennegenskaper

   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

Använd sedan grafikobjektet du skapade för att rita formen

  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

Som standard är pennans bredd lika med 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

Fyll former

Graphics.FillShapes ritar en form och fyller den med den angivna färgen. Fyllformer kan användas

  1. Brush Tool - för att fylla formen med en färg

    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 - för att fylla form med ett mönster

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 - för att fylla form med en lutning

    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 - för att fylla form med en bild

Du kan välja en bild från resurser, en redan definierad Bitmap eller från ett filnamn

   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)

Både Hatch Brush Tool och LinearGradientBrush importerar följande uttalande: Importer System.Drawing.Drawing2D

Text

För att rita text på formuläret använder du DrawString metoden

När du ritar en sträng kan du använda någon av de fyra borstarna som anges ovan

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

Eftersom du inte kan definiera textens bredd eller höjd använder du Measure Text att kontrollera textstorlek

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: Du måste rita ordet "Test" ovanpå formuläret. Formens bredd är 120. Använd den här slingan för att minska teckensnittsstorleken tills den passar in i formens bredd

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow