viernes, 9 de abril de 2010

Picture box


PICTURE BOX

El control PictureBox se utiliza para mostrar y cargar archivos de imagen, también para dibujar figuras mediante los métodos gráficos , y también como control contenedor de otros controles, como los controles Frame

Vista de un picturebox con un gráfico cargado




Propiedad Picture

La principal propiedad del control PictureBox se llama precisamente Picture.

Esta propiedad es la que indica el gráfico que estará cargado. Para cargar un gráfico en visual basic desde el disco, se usa la función LoadPicture. A Esta función le debemos indicar como parámetro la ruta del fichero

Por ejemplo si quisiera cargar un archivo de imagen llamado paisaje.jpg que está ubicado en la unidad c:, y que se cargue cuando le damos un click a un CommandButton, tendriamos que hacer esto:

  1. Option Explicit
  2. Private Sub Command1_Click()
  3. ' -- Le indicamos al método LoadPicture la ruta del gráfico
  4. With Picture1
  5. .Picture = LoadPicture("c:\paisaje.jpg")
  6. End With
  7. End Sub

De esta manera estamos cargando el archivo en tiempo de ejecución. Se dice tiempo de ejecución ya que el archivo lo estamos cargando cuando está corriendo el programa. En cambio si quisiéramos cargar el archivo gráfico en tiempo de diseño, tendríamos que seleccionar el control Picture que colocamos en el formulario, ir a la ventana de propiedades de Visual basic, buscar la propiedad Picture, y seleccionar mediante un cuadro de diálogo de windows, buscarlo en la Pc, y cargar el archivo que queramos. Luego de hacer esto, automáticamente se cargaría la imagen en el control.

Nota : El archivo de imagen, Debe ser obligatoriamente un gráfico gif, jpg, bmp, ico, cur . No asi otros formatos, como por ejemplo el PNG, o Tiff. ( Aunque se puede leer estos formatos, pero mediante otras técnicas, utilizando el api de windows )

En este enlace podés descargar un ejemplo que permite mediante el api de windows poder ver archivos Png en visual basic en un control Picture o Formulario

Ahora ¿ Cómo borrar en tiempo de ejecución la imagen cargada y dejar el Picture vacío ?

Muy simple, debemos hacer lo siguiente:

  1. Option Explicit
  2. Private Sub Command1_Click()
  3. ' -- Le indicamos una ruta o path vacío para eliminar la imagen del PictureBox
  4. With Picture1
  5. .Picture = LoadPicture("")
  6. End With
  7. End Sub

Otra forma de eliminar la imagen es mediante la palabra reservada de vb Nothing.

  1. ' -- Eliminar la imagen mediante la palabra reservada Nothing de vb
  2. With Picture1
  3. .Picture = Nothing
  4. End With

Una cosa importante es que al utilizar LoadPicture para cargar una imagen, cuando le pasamos la ruta del archivo, el path debe ir entre comillas, y obviamente el path debe ser una ruta a un archivo existente, de lo contrario Visual Basic produciría un error al intentar cargar un archivo que no existe. Si te llegara a dar un error comprueba que escribiste bien la ruta y que el archivo está realmente ubicado allí.

Una forma de comprobar la ruta es mediante un controlador de error de la siguiente forma:

Colocar un Botón en el formulario y un Picture

  1. Option Explicit
  2. ' -- Botón que carga una imagen que no existe para recrear el error
  3. ' --------------------------------------------------------------------------------
  4. Private Sub Command1_Click()
  5. On Error GoTo error_handler
  6. ' -- Esto generará un error ya que la ruta no es válida.
  7. ' -- Luego al producirse el error, se ejecutará el cuadro de mensaje
  8. ' -- ubicado en la etiqueta error_handler, mostrarando la descripción del error
  9. With Picture1
  10. .Picture = LoadPicture("una ruta inválida")
  11. End With
  12. Exit Sub
  13. error_handler:
  14. ' -- error 53 - Ruta inválida
  15. If Err.Number = 53 Then
  16. MsgBox "La ruta no es válida. Verifique el archivo", vbCritical, "Error"
  17. ' -- otros errores
  18. Else
  19. MsgBox Err.Description, vbCritical
  20. End If
  21. End Sub
  22. Private Sub Form_Load()
  23. Command1.Caption = "Cargar imagen en picbox"
  24. End Sub


Propiedad Autosize

Esta propiedad lo que hace es adaptar o ajustar el control a las dimensiones del gráfico cargado.

Los posibles valores que le podemos dar son True o False. Si le pasamos True el control se autoajusta al tamaño de la imagen, si le pasamos False el control queda con el ancho y alto sin autoajustarse al gráfico

Esta captura muestra esto mismo, el Picture de la izquierda tiene la propiedad Autosize en False, mientras que el otro la tiene en True.

1 comentario: