Visual Basic .NET Language
GDI +
Buscar..
Crear objeto gráfico
Hay tres formas de crear un objeto gráfico.
- 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
- 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
- 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:
- Color de la pluma o pincel
- 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
Herramienta de
Brush
- para rellenar la forma con un color sólidoDim 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
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)
LinearGradientBrush
- para rellenar la forma con un degradadoDim 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
- 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