domingo, 30 de marzo de 2014

Programación en Gambas


El componente PictureBox

En esta aplicación introduciremos el componente PictureBox, el cual es un espacio capaz de visualizar imágenes. Lo usaremos allí donde tengamos que mostrar una imagen al usuario de nuestra aplicación.

Para mostrar su uso modificaremos el programa de nuestro post anterior, en el que cambiábamos el color de fondo de la ventana al pasar el ratón por encima de unas etiquetas, para que en lugar de eso muestre la imagen del actor de cine que se corresponde con el nombre de la etiqueta.


 Su icono en la caja de herramientas es el que se muestra:


Su propiedad más importantes es Picture, la cual especifica qué imagen deberá mostrarse.

Si el programa debe mostrar una imagen estática durante toda la ejecución del mismo, es decir, si la imagen no va a cambiar, entonces podemos establecer la propiedad Picutre cómodamente en tiempo de diseño haciendo click sobre nuestro PictureBox para seleccionarlo y clicando en la propiedad Picture del panel de propiedades. Allí deberemos indicar la imagen que deberá mostrarse, la cual deberá estar accesible en nuestro ordenador, preferentemente en la carpeta de nuestro proyecto.

Si por el contrario, como en la aplicación que nos ocupa, la imagen a mostrar cambia durante la ejecución del programa debido a la interacción del usuario, deberemos establecer la propiedad Picture, de forma dinámica desde nuestro código.

Para indicar mediante código que un elemento PictureBox muestre una imagen llamada "imagen.jpg" debe escribirse:

PictureBox1.Picture = Picture["imagen.jpg"]

Esto es cierto sólo en el supuesto de que nuestra imagen esté en la carpeta de nuestro proyecto actual, en otro caso el nombre deberá contener también la ruta del archivo.

Visto esto, sólo queda programar los eventos de entrada (Enter) y salida (Leave) de cada etiqueta para que se visualice o se oculte la imagen correspondiente.

Así, por ejemplo, si el puntero de nuestro ratón está sobre la etiqueta Marlon Brando y desplazamos el ratón hasta salir de ella, se disparará evento Leave de dicha etiqueta, lo que debería desencadenar que la imagen actualmente visible de Marlon Brando desapareciera. Esto lo programamos del siguiente modo: en el diseño hacemos clic con el botón derecho del ratón sobre la etiqueta (label) lblMarlonBrando, elegimos Evento > Leave, y escribimos:


PUBLIC SUB lblMarlonBrando_Leave()
  PictureBox1.hide()
END

Es decir, usamos el método hide() del objeto PictureBox para ocultar la imagen.

Para el caso en el que el cursor entre en esta misma etiqueta, procedemos del mismo modo para programar el evento Enter.

PUBLIC SUB lblMarlonBrando_Enter()
  PictureBox1.show()
  PictureBox1.Picture = Picture["Marlon-Brando.jpg"]
END

En este caso, lo primero será hacer visible el PictureBox usando el método show() para visualizarlo y a continuación establecemos la propiedad Picture para que la imagen a mostrar sea la del actor correspondiente.


El código completo de la aplicación sería:

' Gambas class file
' PictureBox

PUBLIC SUB _new()
END

PUBLIC SUB Form_Open()
END

PUBLIC SUB lblAlPacino_Enter()
  PictureBox1.show()
  PictureBox1.Picture = Picture["Al_Pacino.jpg"]
END

PUBLIC SUB lblMarlonBrando_Enter()
  PictureBox1.show()
  PictureBox1.Picture = Picture["Marlon-Brando.jpg"]
END

PUBLIC SUB lblBruceWillis_Enter()
  PictureBox1.show()
  PictureBox1.Picture = Picture["Bruce_Willis.jpg"]
END

PUBLIC SUB lblDeNiro_Enter()
  PictureBox1.show()
  PictureBox1.Picture = Picture["De_Niro.jpg"]
END

PUBLIC SUB lblAlPacino_Leave()
  PictureBox1.hide()
END

PUBLIC SUB lblMarlonBrando_Leave()
  PictureBox1.hide()
END

PUBLIC SUB lblBruceWillis_Leave()
  PictureBox1.hide()
END

PUBLIC SUB lblDeNiro_Leave()
  PictureBox1.hide()
END

PUBLIC SUB btnSalir_Click()
  QUIT

END

No hay comentarios:

Publicar un comentario