Ricerca…


Crea oggetto grafico

Esistono tre modi per creare un oggetto grafico

  1. Dall'evento Paint

Ogni volta che il controllo viene ridisegnato (ridimensionato, aggiornato ...) viene chiamato questo evento, utilizzare in questo modo se si desidera che il controllo disegna costantemente sul controllo

   '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. Crea grafica

Questo è più spesso utilizzato quando si desidera creare un grafico una volta sul controllo o non si desidera che il controllo si ridisegni

   Dim btn as New Button
   Dim g As Graphics = btn.CreateGraphics
  1. Da una grafica esistente

Utilizzare questo metodo quando si desidera disegnare e modificare un'immagine esistente

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

Disegna forme

Per iniziare a disegnare una forma è necessario definire un oggetto penna. La Pen accetta due parametri:

  1. Colore penna o pennello
  2. Pen Width

L'oggetto penna viene utilizzato per creare una struttura dell'oggetto che si desidera disegnare

Dopo aver definito la penna, è possibile impostare proprietà penna specifiche

   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

Quindi usa l'oggetto grafico che hai creato per disegnare la forma

  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

Per impostazione predefinita, la larghezza della penna è uguale a 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

Riempi forme

Graphics.FillShapes disegna una forma e la riempie con il colore dato. Le forme di riempimento possono essere utilizzate

  1. Strumento Brush : per riempire la forma con un colore solido

    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. Strumento HatchBrush : per riempire la forma con un motivo

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 - per riempire la forma con un gradiente

    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 : per riempire la forma con un'immagine

È possibile scegliere un'immagine da risorse, una bitmap già definita o da un nome file

   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)

Sia Hatch Brush Tool che LinearGradientBrush importano la seguente istruzione: Imports System.Drawing.Drawing2D

Testo

Per disegnare il testo sul modulo, utilizzare il metodo DrawString

Quando si disegna una stringa è possibile utilizzare uno dei 4 pennelli elencati sopra

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

Poiché non è possibile definire la larghezza o l'altezza del testo, utilizzare Measure Text per controllare le dimensioni del testo

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

Es: devi disegnare la parola "Test" in cima al modulo. La larghezza del modulo è 120. Utilizzare questo ciclo per ridurre la dimensione del carattere finché non si adatta alla larghezza dei moduli

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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow