martes, 20 de marzo de 2012

PictureBox

El contenedor principal de imágenes en formularios es PictureBox, este control se encuentra en el cuadro de herramientas de la parte de la izquierda. Basta con arrastrar el control al formulario, y aplicarle un tamaño. Este tamaño puede ser modificado arrastrando alguna de las esquinas, o acoplarlo al contenedor principal que, en nuestro caso, al no haber nada más que el formulario, éste sería el propio contenedor. Para poder acoplarlo simplemente pulsaremos sobre la flecha de la esquina superior derecha del PictureBox y seleccionamos Acoplar en contenedor primario.



Para poder elegir una imagen a mostrar en nuestro PictureBox, pulsaremos en la opción Elegir imagen, pudiendo agregarla a la solución del proyecto (carpeta Resources) o desde nuestro pc. La primera opción es interesante, puesto que de esta manera la imagen se guarda en el proyecto y se incluirá en la solución.

¿Cómo hacer para que el usuario cargue una imagen?

Lo primero es crear un proyecto nuevo, para ello abrimos Visual Basic Express Edition, pulsamos Archivo/Nuevo Proyecto y seleccionamos Aplicación de Windows Forms, y le llamamos Carga Imagen.
Arrastramos del cuadro de herramientas un PictureBox, un botón (Button) y un OpenFileDialog. El resultado sería el siguiente,



Hacemos doble clic sobre el botón para asignar una porción de texto,

With OpenFileDialog1 'Con esto conseguimos que no sea obligatorio escribir OpenFileDialog1
            'Establecemos los filtros de las imágenes
            .Filter = "Ficheros BMP|*.bmp" & _
                      "|Ficheros GIF|*.gif" & _
                      "|Ficheros JPG o JPEG|*.jpg;*.jpeg" & _
                      "|Ficheros PNG|*.png" & _
                      "|Ficheros TIFF|*.tif"
            .FilterIndex = 3 'Hacemos que el predeterminado se el tercer filtro, es decir, JPG o JPEG
            If (.ShowDialog() = Windows.Forms.DialogResult.OK) Then 'Abrimos el cuadro de diálogo
             PictureBox1.Image = Image.FromFile(.FileName) 'Asignamos el archivo seleccionado al PictureBox
            End If
End With 'Ya no se asocia el punto a OpenFileDialog1

Pulsamos F5, compilamos y el resultado es el siguiente,



Como se puede observar, la imagen es más grande que las dimensiones del PictureBox, ¿cómo solucionarlo? A continuación lo vemos.
La solución pasa por crear un contenedor en el que se podrán mostrar barras de desplazamiento verticales y horizontales. Eliminamos el PictureBox y agregamos un control denominado Panel y acto seguido, un PictureBox dentro del Panel. Pulsamos en la flecha de la esquina superior derecha del PictureBox, y seleccionamos Acoplar en contenedor primario.
Asignamos el código fuente del apartado anterior más dos líneas,

With OpenFileDialog1 'Con esto conseguimos que no sea obligatorio escribir OpenFileDialog1
            'Establecemos los filtros de las imágenes
            .Filter = "Ficheros BMP|*.bmp" & _
                      "|Ficheros GIF|*.gif" & _
                      "|Ficheros JPG o JPEG|*.jpg;*.jpeg" & _
                      "|Ficheros PNG|*.png" & _
                      "|Ficheros TIFF|*.tif"
            .FilterIndex = 3 'Hacemos que el predeterminado se el tercer filtro, es decir, JPG o JPEG
            If (.ShowDialog() = Windows.Forms.DialogResult.OK) Then 'Abrimos el cuadro de diálogo
             PictureBox1.Image = Image.FromFile(.FileName) 'Asignamos el archivo seleccionado al                      PictureBox
                Panel1.AutoScrollMinSize = PictureBox1.Image.Size 'Asignamos a las barras de desplazamiento del panel el tamaño de la imagen
                Panel1.AutoScroll = True 'Ponemos a True esta opción para que se muestren las barras de desplazamiento

            End If
End With 'Ya no se asocia el punto a OpenFileDialog1



Como se puede observar, ya están disponibles las barras de desplazamiento para poder visualizar toda la imagen.

2 comentarios: