Colabora
 

Degradado Triangular con GDI+

[Utilizando el Control TrackBar y el GDI+]


Fecha: 18/Oct/2007 (12-oct-07)
Autor: Quispe Flores Johnny B.
Email: johnny66621@hotmail.com


Primeramente Saludos a todos los Visual-Maniaticos de la Red. =) si te has topado con este Web-Site quiere decir no fue por casualidad si no que realmente deseas aprender...!!! Ahora Vienen los saludos Personales!!! Y Empiezo con Uno Enorme a Dios!!!! Ups espero que guillermo no sea Ateo!! =S jejeje como decia gracias Dios!!! por haberme dado la dicha de haber nacido en esta era en el que la informatica esta tomando un rumbo totalmente distinto al que se tenia pensado, obviamente este rumbo es para bien..... Sin Olvidar un agradecimiento a Guillerno "El Guille" por haber hecho que este humilde Articulo llegase a ver la Luz, es la Primera Vez que Publico un Articulo!!! Gracias Maestro!!! , tambien un Coordinal Saludo a Percy R. un ser muy transparente, sincero y sobre todo lo que mas aprecio en un ser humano es la humildad, grande amigo...!!! de quien tambien estoy aprendiendo bastante.. y Ala Comunidad Microsoft Sql Server Peru Community..... =)
Te contare rapidamente algo de mi persona y de mi mundo.Net para que no aburras.....ahi vamos =)

Soy un Joven Estudiante de La Carrera Técnico Superior en Informatica..... Recientemente Cruzo el 5to Semestre de la Carrera de Tecnico Superior, pero mi vision esta mas aya de lo evidente como decia el Recordado Leono de los Thundercats, sinceramente me encataria mencionar algun certificado Microsoft que halla Obtenido pero aun no he tenido la Bendita oportunidad de dar un Examen de Certificacion pero estoy decidido a darlo, por el momento me estoy preparando con muchisimo esmero dia y noche minuto a minuto segundo a segundo, (24.7)///(24.7)???? las 24 horas del dia los 7 dias de la semana... para dar el Examen: 70-526 y 70-536 y ser un MCTS (Microsoft Certified Technology Specialist) en Aplicaciones Windows Forms..... de (Visual Basic) hasta el momento muchos de mis compañeros de estudios me apoyan con animos pero eso no cubre el cansancio y la paciencia que hay que tener........pero lo otro bueno de mi persona es que tengo muchisima paciencia...y se esperar el momento..

Objetivos Profesionales: Desenvolverme en una empresa compatible con mis objetivos y metas donde exista un ambiente de trabajo que me permita el crecimiento no solo a nivel profesional sino también a nivel personal. Enfrentar retos, hacer uso de la creatividad y libertad para prácticas de ideas y hechos que propicien el desarrollo de la sociedad.

Objetivos Personales: Obtener todas las Certificaciones Microsoft....
Pero por el momento Obtener el tan añorado (MCTS): y Ser un Ing. de Software..



Bueno sin mas Preambulo Empezemos con el Articulo...!!!

Para Empezar Algo de Teoria, "Pero Johnny!!! si se que la teoria es para muchos siempre muy aburrida pero si no tienes los fundamentos basicos del porque, el para que y cuando es el porque de las cosas, entonces no aprenderas nada, en fin se dice:
Que "Cuando la teoria Tiene un porque, entonces resulta buena." .... uhhmmm meditalo

GDI+

El GDI+ no es nada mas y nada menos que la evolución de GDI, el API(Application Programming Interface), Traduccion (Interfaz de Programación de Aplicaciones), te soy sincero un profesor lo pregunto la otra vez en clase y que crees lo habia olvidado =S, sigamos para la manipulación de gráficos incluido en anteriores versiones de Windows. Al tratarse de un interfaz de programación independiente del dispositivo físico sobre el que se van a generar los gráficos, el programador gana en flexibilidad, ya que no debe preocuparse de si el gráfico generado se va a mostrar por el monitor, impresora, etc.; esta labor es resuelta por GDI+, que aísla el programa del hardware a manejar. GDI+ divide su campo de trabajo en tres áreas principales:

• Generación de gráficos vectoriales 2D

• Manipulación de imágenes en los formatos gráficos más habituales.

• Visualización de texto en un amplio abanico de tipos de letra.

En versiones anteriores del lenguaje, el objeto Form disponía de una serie de métodos y controles para el dibujo sobre la superficie del formulario. La mayor parte de esos elementos han desaparecido en la actual versión de VB, integrándose todas las operaciones de dibujo en las clases de .NET Framework; con ello, lo que aprendamos sobre trabajo con gráficos en VB.NET utilizando GDI+, nos servirá igualmente si en un futuro debemos abordar un proyecto en otro lenguaje de la plataforma, ya que las clases pertenecen a .NET Framework y no a un lenguaje en particular. Otro problema con el que nos enfrentábamos anteriormente era el hecho de que al necesitar alguna manipulación gráfica especial, teníamos que recurrir al API de Windows. A partir de ahora esto no será necesario, ya que como hemos comentado, es el propio entorno de ejecución de .NET el que nos proporciona dicho acceso, por lo que no será necesario acudir al API del sistema operativo.

System.Drawing

Para utilizar las clases relacionadas con la manipulación de gráficos, es preciso importar este espacio de nombres. System.Drawing contiene el conjunto de clases principales, aunque no es el único namespace de GDI+; para tareas de mayor especialización con gráficos deberemos recurrir a alguno de los siguientes espacios de nombre que están dentro de System.Drawing: Drawing2D, Imaging y Text.

Codigo Utilizado para este Demo:
Primero Importaremos el Namespace Imports System.Drawing.Drawing2D para indicarle al .Net que vamos a crear una interfaz en la cual trabajaremos con un manipulador de graficos y de paso obviar codigo. A continuacion crearemos un metodo o procedimiento el cual nos servira como codigo reutilizable ala hora de trabajar con los controles TrackBar, al cual llamaremos Dibujar()

Sub Dibujar()
'Despues Crearemos las Vertices del triangulo
Para ello declararemos la variable "Puntos" la misma que sera asignada a la Estructura Point
Point: Representa un par ordenado de coordenadas X e Y de enteros que define un punto en un plano bidimensional.

Dim Puntos As Point() = {New Point(picColores.Width / 2, 0), _
New Point(picColores.Width, picColores.Height), _
New Point(0, picColores.Height)}

' No hay objetos GraphicsPath creados. El objeto PathGradientBrush
' es construido directamente desde el arreglo de puntos.


Luego Declararemos la variable pthGrBrush ala cual le asignaremos la estructura PathGradientBrush para encapsular el Objeto.
PathGradientBrush: Encapsula el objeto de relleno.

Dim pthGrBrush As New PathGradientBrush(Puntos)
'Luego llamamos ala variable (Puntos)

'seguidamente crearemos un arreglo de colores.
Dim Colores As Color() = { _
Color.FromArgb(255, trbRojo1.Value, trbVerde1.Value, _
trbAzul1.Value), Color.FromArgb(255, trbRojo2.Value, _
trbVerde2.Value, trbAzul2.Value), Color.FromArgb(255, _
trbRojo3.Value, trbVerde3.Value, trbAzul3.Value)}

'Finalmente Llenamos el rectángulo que es mas largo que el triangulo
'Especificado en el arreglo de punto. La parte del rectángulo
'Fuera del triangulo no será pintado.

picColores.CreateGraphics.FillRectangle(pthGrBrush, 0, 0, _
picColores.Width, picColores.Height)

Para Terminar Invocaremos al Metodo o Procedimiento Dibujar() para que haga el trabajo Sucio.. jejeje
me refiero aque el hara todo el trabajo nosotros solo le indicaremos en donde y cuando hacerlo =) jejeje

Private Sub trbRojo1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trbRojo1.Scroll
Call Dibujar()
End Sub

Private Sub trbVerde1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trbVerde1.Scroll
Call Dibujar()
End Sub

Private Sub trbAzul1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trbAzul1.Scroll
Call Dibujar()
End Sub

Private Sub trbRojo2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trbRojo2.Scroll
Call Dibujar()
End Sub

Private Sub trbVerde2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trbVerde2.Scroll
Call Dibujar()
End Sub

Private Sub trbAzul2_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trbAzul2.Scroll
Call Dibujar()
End Sub

Private Sub trbRojo3_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trbRojo3Scroll
Call Dibujar()
End Sub

Private Sub trbVerde3_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trbVerde3.Scroll
Call Dibujar()
End Sub

Private Sub trbAzul3_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles trbAzul3.Scroll
Call Dibujar()
End Sub




Bueno como dice la cancion todo lo bueno tiene su final =) jejeje veamos, nuestra aplicacion se veria mas o menos asi en tiempo de ejecucion


Espero te halla sido de utilidad este Articulo..... nos veremos en la Proxima Entrega
Nota: Todo el Codigo visto en este Articulo es Valido para las Versiones 2003 y 2005.

Saludos Quispe Flores Johnny B.

"No pienses en las Cosas que tienes, Piensa en las cosas que te hacen falta.."
Cualquier duda o Sugerencia te agradeceria muchisimo que me la hicieras saber a mi email: johnny66621@hotmail.com
Saludos Quispe Flores Johnny B.!!!