GDI+   Gráficos en Visual Basic .Net  -  I

Textos artísticos

Fecha: 12/Ago/2005 (11 de Agosto de 2005)
Autor: Ing. Fernando Luque Sánchez  -   DCE  4  Estrellas

fls2307@hotmail.com

 


Sres. Desarrolladores, esta es la primera entrega de una colección de artículos que les enseñará como crear textos artísticos usando GDI+ así como de animaciones sencillas.

UN POCO DE TEORIA

GDI+ es un subsistema de sistema operativo Microsoft Windows XP que se encarga de mostrar información en pantallas y tambien en impresoras. Es la sucesora de GDI que era la Interface de Dispositivo Gráfico incluída en versiones anteriores de Windows.

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.

Partes de GDI+

Los servicios de GDI+ se engloban en tres amplias categorías:

Gráficos vectoriales 2D

Los gráficos vectoriales están relacionados con el dibujo de tipos primitivos (como líneas, curvas y figuras) que se especifican mediante conjuntos de puntos en un sistema de coordenadas. Por ejemplo, una línea recta puede especificarse mediante sus dos extremos, y un rectángulo puede especificarse mediante un punto que indique la ubicación del borde superior izquierdo y un par de números que indiquen el ancho y el alto. Un trazado simple puede especificarse mediante una matriz de puntos que se van a conectar mediante líneas rectas. Una curva spline de Bézier es una curva sofisticada, especificada por cuatro puntos de control.

GDI+ proporciona clases (y estructuras) que almacenan información acerca de los propios tipos primitivos, las clases que almacenan información sobre la forma en que deben dibujarse los tipos primitivos y las clases que realmente realizan el dibujo. Por ejemplo, la estructura Rectangle almacena la ubicación y el tamaño de un rectángulo; la clase Pen almacena información sobre el color de línea, ancho de línea y estilo de línea; y la clase Graphics dispone de métodos para dibujar líneas, rectángulos, trazados y otras figuras. También existen varias clases Brush que almacenan información sobre la forma en que las figuras cerradas y los trazados van a rellenarse con colores o modelos.

Se puede registrar una imagen vectorial (una secuencia de comandos gráficos) en un metarchivo. GDI+ proporciona la clase Metafile para registrar, mostrar y guardar metarchivos. Las clases MetafileHeader y MetaHeader le permiten inspeccionar los datos almacenados en un encabezado de metarchivo.

Imágenes

Hay ciertos tipos de imágenes que no se pueden o son muy difíciles de mostrar con las técnicas de gráficos vectoriales. Por ejemplo, las imágenes de los botones de la barra de herramientas y las imágenes que aparecen en forma de iconos serían difíciles de especificar en forma de colecciones de líneas y curvas. Una fotografía digital de alta resolución de un estadio de béisbol abarrotado sería aún más difícil de crear con las técnicas vectoriales. Las imágenes de este tipo se almacenan como mapas de bits, matrices de números que representan los colores de puntos individuales de la pantalla. GDI+ proporciona la clase Bitmap para mostrar, manipular y guardar mapas de bits.

Tipografía

La tipografía se ocupa de la presentación de texto en diversidad de fuentes, tamaños y estilos. GDI+ proporciona una gran compatibilidad para esta tarea tan compleja. Una de las nuevas características de GDI+ es la función de alisado subpíxel, que proporciona una apariencia más regular al texto que se muestra en una pantalla LCD.

Texto con GDI+

Se puede utilizar cualquier objeto Graphics como superficie para representar texto. La representación de texto requiere la utilización de un objeto Brush, que indica qué modelo rellenará el texto, y un objeto Font, que describirá el modelo que se debe rellenar. La fuente puede ser cualquiera de las instaladas en el sistema, y el pincel puede ser de cualquier tipo. Por lo tanto, es posible pintar texto con un color sólido, con un modelo o incluso con una imagen.

EL EJEMPLO

Para nuestro primer ejemplo hemos creado un formulario como el que se muestra en la siguiente figura:


Figura 01

El texto artístico se muestra en un control PictureBox, antes de dibujar líneas, formas, objetos o manipular imágenes con GDI+ es necesario crear un objeto Graphics, que representa la superficie de dibujo de GDI+. Para crear el objeto Graphics se puede utilizar el método CreateGraphics del formulario o de un control, el control o fomulario deben existir con anterioridad.

Para nuestro ejemplo la creación del objeto gráfico es como se ve en las sigueintes líneas de código:

Una vez creado el objeto Graphics este se puede utilizar para representar líneas, formas, texto o manipular imágenes. Nuestro ejemplo muestra como dibujar texto, los objetos principales para esto son: Las clases Pen, Brush y Font y la estructura Color.

La clase Brush

Las clases que se derivan de esta clase permiten crear objetos utilizados para rellenar el interior de formas gráficas.Las clases derivadas de Brush son: SolidBrush, TextureBrush y LinearGradientBrush.

Pasos para presentar texto usando GDI+

  1. Crear un objeto graphics.
    Dim grafico As  Graphics 
  2. Cree una instancia de la clase Brush que desee usar para pintar el texto. Por ejemplo:
    Dim mybrush As New Drawing2D.LinearGradientBrush(ClientRectangle, _
       Color.Red, Color.Yellow, Drawing2D.LinearGradientMode.Horizontal)
    
  3. Cree la fuente en la que desee que aparezca el texto. Por ejemplo:
    Dim myFont as New Font("Times New Roman", 24)
  4. Invoque al método Graphics.DrawString del objeto Graphics para representar el texto.
    • Si suministra un objeto RectangleF, el texto se ajustará a la línea dentro del rectángulo.
    • De otro modo, el texto comenzará en las coordenadas de inicio que proporcione.
      ' Visual Basic
      g.DrawString("Net Desarrollo", myFont, myBrush, New _
         RectangleF(10, 10, 100, 200))
      g.DrawString("Ing. Fernando Luque Sánchez", myFont, myBrush, 10, 10)
      

En nuestro ejemplo usamos los pincel tipo HashBrush o LinearGradientBrush según el botón de opción seleccionado (Ver fígura 01). El pincel LinearGradientBrush se puede mostrar como la figura 02


Figura 02

 

A continuación sigue código en Visual Basic: 

 

El codigo completo está en el empaquetado al final del artículo. Suerte a todos y no se olviden dar su opinión en PanoramaBox, eso me alienta a seguir compartiendo con ustedes mis conocimientos.

 

Ing. Fernando Luque Sánchez
CIP 61806
De Trujillo - Perú para el mundo


Espacios de nombres usados en el código de este artículo:

System.Drawing..Drawing2D


Fichero con el código de ejemplo: FernandoLuque_GDITexto01.zip - Tamaño 7 KB


ir al índice