System.Drawing


Muchos desconocen la utilización de System.Drawing, pues bien vamos a hacer algo con el cual aprenderemos a trabajar con este espacio de nombres, así mismo solucionaríamos en algo el problema de nuestra amiga Mayra Espinoza Reyes.

¿Qué es System.Drawing?

El espacio de nombres

System.Drawing proporciona acceso a funcionalidad de gráficos básica de GDI+. Se ofrece una funcionalidad más avanzada en los espacios de nombres System.Drawing.Drawing2D, System.Drawing.Imaging y System.Drawing.Text.

La clase Graphics proporciona métodos para dibujar en el dispositivo de pantalla. Clases como Rectangle y Point encapsulan primitivos de GDI+. La clase Pen se utiliza para dibujar líneas y curvas, mientras que las clases derivadas de la clase abstracta Brush se utilizan para rellenar el interior de las formas.(Ref. MSDN  http://msdn.microsoft.com/es-es/library/system.drawing(v=vs.80).aspx)

Sin mucho preámbulo empecemos (espero que esta demo les guste).

Diseño del Formulario

para mas detalle los controles son los siguientes:

*- Formulario llamado frmRecta
*- Un Control PictureBox llamado pbRecta
*- Un Control DataGridView llamado dgvPuntos
*- Un Control Button llamado btnGraficar
Vamos a la ventana de código

a) Importamos las Librerias

Imports System.Drawing

b) Declaramos las variables

Private bmp As Bitmap
Private grImg As Graphics
Private pos_X As Integer ' Nos indicara cual es el punto cero(0) de X
Private pos_Y As Integer  ' Nos indicara cual es el punto cero(0) de Y

c) Creamos un Procedimiento para crear la recta

Private Sub CrearRecta()
Dim rec As New Rectangle(0, 0, bmp.Width, bmp.Height) ' Se crea una area rectangular basada en el ancho y alto de la variable bmp.
grImg.FillRectangle(Brushes.White, rec) ' Rellenamos el gráfico de color blanco pero en el area rectangular creada
pos_X = bmp.Width / 2
pos_Y = bmp.Width / 2
Dim p1 As New Point(pos_X, 0)
Dim p2As New Point(pos_X, bmp.Height)
grImg.DrawLine(Pens.Red, p1, p2)
p1 = New Point(0, pos_Y)
p2 = New Point(bmpWidth, pos_Y)
grImg.DrawLine(Pens.Red, p1, p2)
Dim I As Integer
For I = 0 To bmp.Height Step 20
grImg.DrawString("-", New Font("Arial", 10, FontStyle.Bold), Brushes.Red, pos_X - 4, I)
Next
For I = 0 To bmp.Width Step 20
grImg.DrawString("+", New Font("Arial", 10, FontStyle.Regular), Brushes.Red, I, pos_Y -8)
Next
pbRecta.Image = bmp
End Sub

d) Creamos la recta al cargar el formulario

Private Sub frmRecta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
bmp = New Bitmap(Me.pbRecta.Width, Me.pbRecta.Height)
grImg = Graphics.FromImage(bmp)
CrearRecta()
End Sub

e) Creamos la grafica al presionar el botón

Private Sub Graficar(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGraficar.Click
CrearRecta()
Dim I As Integer
Dim Puntos As New List(Of Point)
Dim x1 As Integer
Dim y1 As Integer
For I = 0 To dgvPuntos.Rows.Count - 2
x1 = dgvPuntos.Item(0, I).Value
y1 = dgvPuntos.Item(1, I).Value
x1 = (x1 * 20) + pos_X
If y1.ToString.Substring(0, 1) = "-" Then y1 = (Math.Abs(y1) * 20) + pos_Y Else y1 = (y1 * 20) - pos_Y
Puntos.Add(New Point(Math.Abs(x1), Math.Abs(y1)))
Next
grImg.DrawPolygon(Pens.Blue, Puntos.ToArray)
grImg.FillPolygon(Brushes.Blue, Puntos.ToArray)
pbRecta.Image = bmp
End Sub

f) Probar el ejercicio

Anuncios

Un pensamiento en “System.Drawing

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s