Manipulación de los eventos de pintado en la clase Form

Manipulación de los eventos de pintado en la clase Form

El primer ejemplo, contenido en el proyecto FondoFormManual (hacer clic aquí para acceder a este ejemplo), se basa en la codificación del evento Paint( ) de la clase Form.

Dentro del procedimiento manipulador de este evento, creamos un objeto Bitmap que contenga la referencia hacia un fichero con el gráfico a mostrar de fondo, y con un objeto Graphics, obtenido del parámetro EventArgs del evento, pintamos el objeto Bitmap. Ver el Código fuente 546.

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint

' crear un objeto bitmap Dim oBitmap As New Bitmap("LogoWin.gif")

' pintar el objeto con el contexto ' gráfico del formulario; ' el area a pintar abarca desde la ' coordenada 0,0 y toma el ancho y alto ' del formulario de su propiedad Size Dim oGraphics As Graphics = e.Graphics oGraphics.DrawImage(oBitmap, 0, 0, Me.Size.Width, Me.Size.Height)

End Sub

Código fuente 546

Queda todavía un paso más, ya que aunque la imagen se muestra como fondo del formulario, si redimensionamos este, sólo se repinta la parte nueva redimensionada, produciendo un efecto no deseado. Ver Figura 330.

Para conseguir que se pinte por completo toda la imagen, debemos invalidar la zona gráfica del formulario mediante su método Invalidate( ), en el evento Resize, el cual es provocado cada vez que cambia el formulario de tamaño. Después de escribir el Código fuente 547, cuando volvamos a ejecutar el ejemplo, la imagen de fondo se adaptará en todo momento a las medidas del formulario.

© Grupo EIDOS 35. GDI+. Acceso al subsistema gráfico de Windows

Figura 330. Imagen de fondo con repintado irregular.

Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize

' cada vez que cambie el tamaño del formulario ' invalidamos su área de dibujo para que ' el evento Paint pinte toda la superficie Me.Invalidate()

End Sub

Código fuente 547

Empleo del control PictureBox

Después de la técnica compleja (sólo en parte), vamos ahora con el modo fácil para crear una imagen

de fondo, que pasa por el uso del control PictureBox. Este control nos permite la visualización de imágenes en el formulario de un modo sencillo, ya que

toda la mecánica de generación la lleva incorporada, con lo que el programador se despreocupa de la manipulación del gráfico a mostrar.

El proyecto FondoFormPicB (hacer clic aquí para acceder a este ejemplo) contiene esta aplicación para que el lector pueda realizar las pruebas que requiera.

Una vez insertado un PictureBox en el formulario, asignaremos a su propiedad Dock el valor Fill; de esta forma el control ocupará por completo la superficie del formulario.

A continuación asignaremos el fichero con la imagen a la propiedad Image, y por último, tenemos que establecer la propiedad SizeMode al valor StretchImage. Esto será todo, por lo que si ejecutamos el programa, la imagen quedará en todo momento ajustada al formulario al igual que en el anterior caso. Ver Figura 331.

Programación con Visual Basic .NET © Grupo EIDOS

Figura 331. Imagen de fondo del formulario empleando un PictureBox.