GRAFICACIÓN I GDI+: Interfaz Avanzado de Diseño de Gráficos Crea gráficos, dibujar texto y manipular imágenes gráficas como si fueran objetos GDI+ es una interfaz de programación de aplicaciones (API) que se expone a través de un conjunto de clases implementadas como código administrado. GDI+ viene a ser la interfaz de dispositivo gráfico la cual permite mostrar información en una pantalla o impresora sin tener que preocuparnos por manejar cuestiones de hardware gráfico, ya que todo este trabajo lo hará los métodos GDI+, llamando a los controladores de dispositivo específicos, de esta manera GDI+ aísla o separa a la aplicación del hardware gráfico, y este aislamiento es el que permite crear aplicaciones independientes del dispositivo. GDI+ es la parte del sistema operativo Windows,que proporciona gráficos vectoriales, imágenes y tipografía bidimensionales. GDI+ mejora a GDI (la Graphics Device Interface incluida en versiones anteriores de Windows) agregando nuevas características y optimizando las existentes. La interfaz de clases administradas de GDI+ (un conjunto de contenedores) forma parte de.net Framework, un entorno para generar, implementar y ejecutar servicios Web basados en XML y otras aplicaciones. Todo el código se basa en System.Drawing y System.Drawing.Drawing2D, la explicación es que las clases que producen gráficos vectoriales en Visual Basic.NET están contenidas en estos espacios de nombres..drawing2d Líneas, curvas y formas La sección de gráficos vectoriales de GDI+ se utiliza para dibujar líneas, curvas y dibujar y rellenar formas. Información general acerca de gráficos vectoriales GDI+ dibuja líneas, rectángulos y otras formas en un sistema de coordenadas. Se puede elegir entre varios sistemas de coordenadas, pero el sistema de coordenadas predeterminado tiene el origen en la esquina superior izquierda, con el eje x apuntando hacia la derecha y el eje y apuntando hacia abajo. La unidad de medida del sistema de coordenadas predeterminado FACULTAD DE EDUCACIÓN MATEMATICA, FISICA e INFORMATICA José Moreno Vega Página 1
es el píxel. INFORMATICA VISUAL BASIC 2008 Las unidades de creación de GDI+ Un monitor del sistema crea su pantalla en una matriz rectangular de puntos a los que se denomina elementos de imagen o píxeles. El número de píxeles que aparece en la pantalla varía de un monitor a otro, y el número de píxeles que aparece en un monitor individual suele poder configurarlo, hasta cierto punto, el usuario. Cuando se utiliza GDI+ para dibujar una línea, un rectángulo o una curva, se proporciona cierta información clave sobre el elemento que se va a dibujar. Por ejemplo, es posible especificar una línea si se proporcionan dos puntos y se puede especificar un rectángulo si se proporciona un punto, un alto y un ancho. GDI+ funciona junto con el software del controlador de vídeo para determinar qué píxeles deben encenderse para mostrar la línea, el rectángulo o la curva. En la siguiente ilustración se muestra la forma en que se activan los píxeles para mostrar una línea del punto (4, 2) al punto (12, 8). Con el tiempo, determinadas unidades de creación han resultado ser las más útiles para crear imágenes bidimensionales. Estas unidades de creación, todas ellas compatibles con GDI+, se indican en la lista siguiente: Líneas Rectángulos Elipses Arcos Polígonos FACULTAD DE EDUCACIÓN MATEMATICA, FISICA e INFORMATICA José Moreno Vega Página 2
Curvas spline cardinales Curvas spline de Bézier Métodos para dibujar con un objeto Graphics La clase Graphics de GDI+ proporciona los métodos siguientes para dibujar los elementos enumerados en la lista anterior: DrawLine, DrawRectangle, DrawEllipse, DrawPolygon, DrawArc, DrawCurve (para las curvas spline cardinales) y DrawBezier. Cada uno de estos métodos está sobrecargado, es decir, cada método admite varias listas de parámetros distintas. Por ejemplo, una variación del método DrawLine recibe un objeto Pen y cuatro enteros, mientras que otra variación del método DrawLine recibe un objeto Pen y dos objetos Point. Los métodos para dibujar líneas, rectángulos y curvas spline de Bézier tienen métodos asociados plurales que dibujan varios elementos en una única llamada: DrawLines, DrawRectangles y DrawBeziers. Además, el método DrawCurve tiene un método asociado, DrawClosedCurve, que cierra una curva conectando el extremo con el punto inicial de la curva. Todos los métodos de dibujo de la clase Graphics funcionan junto con un objeto Pen. Para poder dibujar algo se deben crear dos objetos por lo menos: un objeto Graphics y un objeto Pen. El objeto Pen almacena atributos, como el color y el ancho de línea, del elemento que se va a dibujar. El objeto Pen se pasa como uno de los argumentos del método de dibujo. Los ejes de coordenadas Cualquier formulario o control contiene tres sistemas de coordenadas, llamados coordenadas de dispositivo, coordenadas de página y coordenadas de mundo. En los tres sistemas los valores +X aumentan hacia la derecha y los valores +Y aumentan hacia abajo, según muestra el siguiente esquema: FACULTAD DE EDUCACIÓN MATEMATICA, FISICA e INFORMATICA José Moreno Vega Página 3
Ejemplo 1: Crea un formulario y presione un click izquierdo en el interior del formulario. Se visualizara en la ventana Propiedades: Seleccione Paint, y escriba el nombre Form1 Ingrese a la ventana código, haciendo doble clic izquierdo en el formulario Escriba: Public Class Form1 Dim g As Graphics Private Sub Form1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint g = e.graphics g.drawellipse(pens.black, New Rectangle(0, 0, 100, 100)) End Sub End Class FACULTAD DE EDUCACIÓN MATEMATICA, FISICA e INFORMATICA José Moreno Vega Página 4
Ejecute : Lápices, líneas y rectángulos en GDI+ Para dibujar líneas con GDI+ necesita crear un objeto Graphics y un objeto Pen. El objeto Graphics proporciona los métodos que realmente realizan el dibujo, y el objeto Pen almacena atributos como el estilo, el ancho y el color de línea. Dibujar una línea Para dibujar una línea, llame al método DrawLine del objeto Graphics. El objeto Pen se pasa como uno de los argumentos del método DrawLine. Los servicios de GDI+ que se exponen a través de un conjunto de clases administradas, se agrupan en tres categorías: Gráficos vectoriales 2D: Se refiere al dibujo de líneas, curvas y figuras( tipos primitivos ) que se especifican mediante conjuntos de puntos en un sistema de coordenadas. Ejemplo 2: Una línea recta puede especificarse mediante sus dos extremos: Public Class Form1 Dim Lapiz As Pen = New Pen(Color.Blue) Dim PuntoInicial As Point = New Point(10, 10) Dim PuntoFinal As Point = New Point(300, 300) Private Sub Form1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint Me.CreateGraphics.DrawLine(Lapiz, PuntoInicial, PuntoFinal) End Sub End Class FACULTAD DE EDUCACIÓN MATEMATICA, FISICA e INFORMATICA José Moreno Vega Página 5
Ejecute: Ejemplo 3: Un rectángulo puede especificarse mediante un lápiz con el que dibujaremos, un punto que indique la ubicación del borde superior izquierdo y un par de números que indiquen el ancho y el alto. Public Class Form1 Dim Lapiz As New Pen(Color.RoyalBlue, 4) Dim PuntoBordeSuperiorIzquierdo As Point = New Point(50, 100) Dim Ancho As Integer = 100 Dim Alto As Integer = 179 Private Sub Form1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint Me.CreateGraphics.DrawRectangle(Lapiz, New Rectangle(PuntoBordeSuperiorIzquierdo, New Size(Ancho, Alto))) End Sub End Class Ejecute: FACULTAD DE EDUCACIÓN MATEMATICA, FISICA e INFORMATICA José Moreno Vega Página 6
Ejemplo 4: Tres líneas Public Class Form1 Dim pencurrent As Pen = New Pen(Color.Red) Private Sub Fomr2(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint e.graphics.drawline(pencurrent, 20, 20, 205, 20) pencurrent = New Pen(Color.Green) e.graphics.drawline(pencurrent, 40, 40, 225, 40) pencurrent = New Pen(Color.Blue) e.graphics.drawline(pencurrent, 30, 60, 215, 60) End Sub End Class Ejecuta FACULTAD DE EDUCACIÓN MATEMATICA, FISICA e INFORMATICA José Moreno Vega Página 7
FACULTAD DE EDUCACIÓN MATEMATICA, FISICA e INFORMATICA José Moreno Vega Página 8