Gráficos GDI + en Visual Basic .NET Tutorial

GDI + es la forma de dibujar formas, fuentes, imágenes o, en general, cualquier cosa gráfica en Visual Basic .RED.

Este artículo es la primera parte de una introducción completa al uso de GDI + en Visual Basic .NET.

GDI + es una parte inusual de .NET. Estaba aquí antes de .NET (GDI + se lanzó con Windows XP) y no comparte los mismos ciclos de actualización que .NET Framework. La documentación de Microsoft generalmente indica que Microsoft Windows GDI + es una API para C / C ++ programadores en el sistema operativo Windows. Pero GDI + además incluye el espacios de nombres utilizados en VB.NET para programación de gráficos basada en software.

WPF

Pero no es el solamente software de gráficos proporcionado por Microsoft, especialmente desde Framework 3.0. Cuando se introdujeron Vista y 3.0, se introdujo el WPF totalmente nuevo. WPF es un enfoque de gráficos de alto nivel acelerado por hardware. Como Tim Cahill, miembro del equipo de software de Microsoft WPF, dice, con WPF "usted describe su escena usando construcciones de alto nivel, y nos preocuparemos por el descanso ". Y el hecho de que es acelerado por hardware significa que no tiene que arrastrar hacia abajo el funcionamiento del procesador de su PC dibujando formas en el pantalla. Gran parte del trabajo real lo realiza su tarjeta gráfica.

instagram viewer

Hemos estado aquí antes, sin embargo. Cada "gran salto adelante" suele ir acompañado de algunos tropiezos hacia atrás, y además, WPF tardará años en abrirse camino a través de los miles de millones de bytes de código GDI +. Eso es especialmente cierto ya que WPF casi asume que estás trabajando con un sistema de alta potencia con mucha memoria y una tarjeta gráfica caliente. Es por eso que muchas PC no podían ejecutar Vista (o al menos, usar los gráficos Vista "Aero") cuando se introdujo por primera vez. Por lo tanto, esta serie continúa estando disponible en el sitio para todos y cada uno de los que continúan necesitando usarla.

Good Ol 'Code

GDI + no es algo que pueda arrastrar a un formulario como otros componentes en VB.NET. En cambio, los objetos GDI + generalmente deben agregarse a la antigua usanza, ¡codificándolos desde cero! (Aunque, VB .NET incluye una serie de fragmentos de código muy útiles que realmente pueden ayudarlo).

Para codificar GDI +, utiliza objetos y sus miembros de varios espacios de nombres .NET. (En la actualidad, en realidad estos son solo códigos de envoltura para objetos del sistema operativo Windows que realmente hacen el trabajo).

Espacios de nombres

Los espacios de nombres en GDI + son:

Sistema. Dibujo

Esto es el Core GDI + espacio de nombres. Define objetos para la representación básica (fuentes, bolígrafos, pinceles básicos, etc.) y el objeto más importante: Gráficos. Veremos más de esto en solo unos pocos párrafos.

Sistema. Dibujo. Drawing2D

Esto le proporciona objetos para gráficos vectoriales bidimensionales más avanzados. Algunos de ellos son pinceles degradados, casquillos y transformaciones geométricas.

Sistema. Dibujo. Imagen

Si desea cambiar imágenes gráficas, es decir, cambiar la paleta, extraer metadatos de imágenes, manipular metarchivos, etc., esta es la que necesita.

Sistema. Dibujo. Impresión

Para representar imágenes en la página impresa, interactuar con la impresora y formatear la apariencia general de un trabajo de impresión, use los objetos aquí.

Sistema. Dibujo. Texto

Puede usar colecciones de fuentes con este espacio de nombres.

Objeto de gráficos

El lugar para comenzar con GDI + es el Gráficos objeto. Aunque las cosas que dibujas aparecen en tu monitor o impresora, el objeto Graphics es el "lienzo" en el que dibujas.

Pero el objeto Graphics también es una de las primeras fuentes de confusión al usar GDI +. El objeto Graphics siempre está asociado a un objeto particular. contexto del dispositivo. Entonces, el primer problema al que se enfrenta prácticamente cada nuevo estudiante de GDI + es: "¿Cómo obtengo un objeto Graphics?"

Básicamente hay dos formas:

  1. Puedes usar el mi parámetro de evento que se pasa al OnPaint evento con el PaintEventArgs objeto. Varios eventos pasan el PaintEventArgs y puede usar el para referirse al objeto Graphics que ya está siendo usado por el contexto del dispositivo.
  2. Puedes usar el CreateGraphics Método para un contexto de dispositivo para crear un objeto de gráficos.

Aquí hay un ejemplo del primer método:

Protegido reemplaza a Sub OnPaint (_. ByVal e como sistema. Windows Formas PaintEventArgs) Dim g As Graphics = e. Gráficos. sol. DrawString ("Acerca de Visual Basic" y vbCrLf _. & "y GDI +" & vbCrLf & "Un gran equipo", _. Nueva fuente ("Times New Roman", 20), _. Pinceles Firebrick, 0, 0) MyBase. OnPaint (e) End Sub

Haga clic aquí para mostrar la ilustración.

Agregue esto a la clase Form1 para una aplicación estándar de Windows para codificarlo usted mismo.

En este ejemplo, ya se creó un objeto Graphics para el formulario Formulario 1. Todo lo que tiene que hacer su código es crear una instancia local de ese objeto y usarlo para dibujar en el mismo formulario. Tenga en cuenta que su código Anulaciones el OnPaint método. Es por eso MyBase OnPaint (e) se ejecuta al final. Debe asegurarse de que si el objeto base (el que está anulando) está haciendo otra cosa, tiene la oportunidad de hacerlo. A menudo, su código funciona sin esto, pero es una buena idea.

PaintEventArgs

También puede obtener un objeto Graphics utilizando PaintEventArgs objeto entregado a su código en el OnPaint y Métodos OnPaintBackground de un formulario. los PrintPageEventArgs pasado en un Imprimir página El evento contendrá un objeto Graphics para imprimir. Incluso es posible obtener un objeto Graphics para algunas imágenes. Esto puede permitirle pintar directamente en la imagen de la misma manera que pintaría en un Formulario o componente.

Controlador de eventos

Otra variación del método uno es agregar un controlador de eventos para Pintar evento para el formulario. Así es como se ve ese código:

Private Sub Form1_Paint (_. ByVal remitente como objeto, _. ByVal e como sistema. Windows Formas PaintEventArgs) _. Me maneja Pintar. Dim g As Graphics = e. Gráficos. sol. DrawString ("Acerca de Visual Basic" y vbCrLf _. & "y GDI +" & vbCrLf & "Un gran equipo", _. Nueva fuente ("Times New Roman", 20), _. Pinceles Ladrillo de fuego, 0, 0) End Sub

CreateGraphics

El segundo método para obtener un objeto Graphics para su código utiliza un CreateGraphics Método que está disponible con muchos componentes. El código se ve así:

Private Sub Button1_Click (_. Remitente ByVal como sistema. Objeto, _. ByVal e como sistema. EventArgs) _. Botón de manijas 1. Haga clic en. Dim g = Me. Crear gráficos. sol. DrawString ("Acerca de Visual Basic" y vbCrLf _. & "y GDI +" & vbCrLf & "Un gran equipo", _. Nueva fuente ("Times New Roman", 20), _. Pinceles Ladrillo de fuego, 0, 0) End Sub

Hay un par de diferencias aquí. Esto está en el Button1.Click evento porque cuando Formulario 1 se repinta en el Carga evento, nuestros gráficos se pierden. Entonces tenemos que agregarlos en un evento posterior. Si codifica esto, notará que los gráficos se pierden cuando Formulario 1 tiene que ser redibujado (Mimimize y maximice nuevamente para ver esto.) Esa es una gran ventaja al usar el primer método.

La mayoría de las referencias recomiendan usar el primer método ya que sus gráficos se volverán a pintar automáticamente. ¡GDI + puede ser complicado!

instagram story viewer