Buscar..


Crear objeto gráfico

Hay tres formas de crear un objeto gráfico.

  1. Desde el evento de pintura

Cada vez que se vuelve a dibujar el control (redimensionado, actualizado ...) se llama a este evento, use de esta manera si desea que el control se dibuje constantemente en el control

   '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. Crear gráfico

Esto se usa con más frecuencia cuando desea crear un gráfico de una sola vez en el control o no desea que el control se vuelva a pintar.

   Dim btn as New Button
   Dim g As Graphics = btn.CreateGraphics
  1. De un gráfico existente

Utilice este método cuando desee dibujar y cambiar un gráfico existente

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

Dibujar formas

Para comenzar a dibujar una forma, debe definir un objeto de lápiz. El Pen acepta dos parámetros:

  1. Color de la pluma o pincel
  2. Ancho de la pluma

El objeto Pluma se utiliza para crear un esquema del objeto que desea dibujar

Después de definir la pluma, puede establecer propiedades específicas de la pluma

   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

Luego usa el objeto gráfico que creaste para dibujar 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

Por defecto, el ancho del lápiz es igual 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

Formas de relleno

Graphics.FillShapes dibuja una forma y la llena con el color dado. Formas de relleno pueden usar

  1. Herramienta de Brush - para rellenar la forma con un color sólido

    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. Herramienta HatchBrush - para rellenar la forma con un patrón

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 - para rellenar la forma con un degradado

    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 - para rellenar la forma con una imagen

Puede elegir una imagen de los recursos, un mapa de bits ya definido o de un nombre de archivo

   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)

Tanto la Hatch Brush Tool LinearGradientBrush como LinearGradientBrush importan la siguiente declaración: Imports System.Drawing.Drawing2D

Texto

Para dibujar texto en el formulario use el método DrawString

Cuando dibuja una cadena puede usar cualquiera de los 4 pinceles enumerados anteriormente

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

Ya que no puede definir el ancho o alto del texto, use Measure Text para verificar el tamaño del texto

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

Ej: debe dibujar la palabra "Prueba" en la parte superior del formulario. El ancho del formulario es 120. Use este bucle para disminuir el tamaño de la fuente hasta que encaje en el ancho del formulario

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow