ProgramasVb6
  PictureBox
 

Descripción del control PictureBox

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

Vista previa de la Propiedad Picture del control PictureBox

 

Vista de un PictureBox con un dibujo hecho por nosotros, en este caso un rectángulo :

http://www.recursosvisualbasic.com.ar/htm/tutoriales/img/control-picturebox-rectangulo.gif

 

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 lafunció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.    

3.  Private Sub Command1_Click()  

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.    

3.  Private Sub Command1_Click()  

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. de vb  

1.  With Picture1  

2.      .Picture = Nothing  

3.  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.  Private Sub Command1_Click()  

3.      On Error GoTo error_handler  

4.       With Picture1  

5.          .Picture = LoadPicture("una ruta inválida")  

6.      End With  

7.        

8.      Exit Sub  

9.  error_handler:  

10.  

 

If Err.Number = 53 Then  

 

MsgBox "La ruta no es válida. Verifique el archivo", vbCritical, "Error"  

11.Else
MsgBox Err.Description, vbCritical  

12.     End If  

13. End Sub  

14.   

15. Private Sub Form_Load()  

16.     Command1.Caption = "Cargar imagen en picbox"  

17. 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.

Imagen previa que mustra como utilizar la propiedad AutoSize del control de image

 


Usar el PictureBox como contenedor

El control PictureBox también funciona como contenedor de otro controles. Esto quiere decir que podemos colocar controles TextBox, botones etc..., dentro del control , y estos estarán contenidos.

Ejemplo : Colocar un Picture1 en el formulario con 2 CommandButton de la siguiente manera:

 

Ejemplo de como utilizar el control picture como contenedor de objetos

 

En la propiedad caption del Command1 coloca "Ocultar PictureBox" y en el otro "Mostrar PictureBox"

Ahora selecciona los controles que quieras de la barra de controles y dibujalos dentro del Picture1. Asegurate que los dibujes dentro del mismo

Los botones Command1 y Command2 hacen lo mismo que el ejemplo anterior, es decir mediante la propiedad Visible del Picture1 , ocultan y hace visible nuevamente al PictureBox, utilizando el valor True o False respectivamente.

1.  Option Explicit  

2.    

3.  Private Sub Command1_Click()  

4.      ' -- Ocultar el Picture  

5.      Picture1.Visible = False  

6.  End Sub  

7.    

8.  Private Sub Command2_Click()  

9.      ' -- Mostrar el Picture1  

10.     Picture1.Visible = True  

11. End Sub  

 

Al ejecutar el program, a podés ver que cuando ocultás el PictureBox, todos los demás controles también se ocultan, es decir esto demuestra que el control Picture es el contenedor de los otros. Si no llegara a ocultarse todos los demás controles, es porque hiciste mal el paso de ubicarlos dentro del Picture. En este caso asegurate que al dibujarlos queden dentro del mismo. Otra forma de colocar controles dentro de un picture y que queden contenidos en él, es cortar el control con el comando Cortar (click derecho sobre el mismo) y seleccionar el Picture y cuando está seleccionado lo pegás, automáticamente de esta forma ya pasa a estar contenido.

Otro control que permite hacer de contenedor es el control Frame

 


Propiedad Container - Insertar controles en tiempo de ejecución

El anterior ejemplo, mostraba como colocar los controles en tiempo de diseño, pero hay veces que es necesario por algún motivo hacerlo si o si en tiempo de ejecución.

Para poder colocar los controles dentro de un contenedor, podemos usar la propiedad Container .

Este simple ejemplo muestra como insertar un control TextBox y un Commandbuton dentro de un Picture1 al cargar el formulario, es decir en el evento FormLoad

 

Colocar en el form1 : Un Text1, command1 y un Picture1

Color el código fuente en el formulario

1.  Option Explicit  

2.    

3.  Private Sub Form_Load()  

4.      ' -- Inserta los controles ( El textbox y el botón )  

5.      Set Text1.Container = Picture1  

6.      Set Command1.Container = Picture1  

7.      ' -- los posiciona  

8.      Text1.Move 0, 0, 1000  

9.      Command1.Move 0, (Text1.Top + Text1.Height + 10), 1000  

10.   

11. End Sub  

 

 


Propiedad Autoredraw

La propiedad AutoRedraw es una propiedad muy importante y muy utilizada cuando se usa un picturebox para dibujar sobre el control

Lo que permite hacer la propiedad Autoredraw, es que al estar activada (con el valor True), y utilizar los métodos gráficos, por ejemplo dibujar un círculo, una linea, o cualquier imagen / dibujo, cuando se repinte el control, la imagen no se pierda, es decir que se mantenga. De esta manera Visual basic automáticamente vuelve a dibujar la imagen. Esta propiedad por defecto se encuentra en false. Luego es posible borrar la imagen con el método Cls

Puedes ver un simple ejemplo de esto mismo en el siguiente código:

Esto dibuja una cuadrado en el picture1 al presionar un botón. Luego, podés minimizar y volver a maximizar la ventana del formulario y ver que el dibujo se mantiene ya que la propiedad AutoRedraw se ha establecido en True

Colocar un botón y un picturebox en el formulario ( Command1 y picture1 )

1.  Option Explicit  

2.    

3.  ' -- Botón para dibujar el rectángulo  

4.  ' ---------------------------------------------------------  

5.  Private Sub Command1_Click()  

6.      With Picture1  

7.          .AutoRedraw = True  

8.          ' -- Dibujar un cuadradro  

9.          Picture1.Line (100, 100)-Step(400, 400), vbRed, B  

10.     End With  

11. End Sub  

12.   

13. Private Sub Form_Load()  

14.     Command1.Caption = "Dibujar cuadrado"  

15. End Sub  

16.             

 

Ahora, prueba este mismo código que es igual al anterior, pero se ha establecido la propiedad AutoRedraw en False. Al presionar el botón se dibujará el rectángulo de todas formas, pero si minimizas la ventana y la vuelves a maximizar, el dibujo se perderá

Colocar un botón y un picturebox en el formulario ( Command1 y picture1 )

1.  Option Explicit  

2.    

3.  ' -- Botón para dibujar el rectángulo  

4.  ' ---------------------------------------------------------  

5.  Private Sub Command1_Click()  

6.      With Picture1  

7.          .AutoRedraw = False  

8.          ' -- Dibujar un cuadradro  

9.          Picture1.Line (100, 100)-Step(400, 400), vbRed, B  

10.     End With  

11. End Sub  

12.   

13. Private Sub Form_Load()  

14.     Command1.Caption = "Dibujar cuadrado"  

15. End Sub             

 

Nota. Cuando la propiedad AutoRedraw se encuentra en True, el evento Paint del picturebox nunca se ejecuta. En cambio cuando se encuentra en False, el evento Paint se ejecutará cada ves que se repinte el control, ya sea cuando se minimiza y maximiza el formulario, cuando se tapa un área del control mediante otra ventana de windows por ejemplo.

Este código muestra que se ejecuta el evento paint, ya que la propiedad AutoRedraw se encuentra en False

1.  Option Explicit  

2.    

3.  Private Sub Form_Load()  

4.    

5.      Picture1.AutoRedraw = False  

6.  End Sub  

7.    

8.  Private Sub Picture1_Paint()  

9.    

10.     Static i As Integer  

11.       

12.     i = i + 1  

13.       

14.     Me.Caption = "se ejecutó Paint " & CStr(i) & " veces"  

15.       

16.     ' -- Eliminar dibujo previo  

17.     Picture1.Cls  

18.     ' -- Dibujar un cuadradro  

19.     Picture1.Line (100, 100)-Step(400, 400), vbRed, B  

20. End Sub  

 

Ahora si en cambio colocas en el código anterior, la propiedad AutoreDraw en true, puedes comprobar que el evento Paint no se ejecuta nunca.

 


Guardar la imagen del picturebox como BMP

Utilizando método SavePicture de vb es posible grabar en disco un archivo BMP, con el gráfico cargado en el control ( propiedad Picture del PicBox). El uso de este método o función es muy simple. A SavePicture se le debe pasar dos parámetros:

·  La propiedad Picture es decir la imagen ( También es posible pasar la propiedad image si se ha dibujado con los métodos gráficos o con el uso de las apis de windows )

·  y el path donde se creará el archivo

Por ejemplo:

1.  ' -- Cargar una imagen en el control  

2.  Picture1.Picture = LoadPicture(ruta)  

3.    

4.  ' -- Grabar el archivo BMP en la ruta especificada  

5.  SavePicture Picture1.Picture, "C:Imagen.BMP"  

 

El código anterior genera un archivo BMP en la unidad c: llamado imagen.bmp


Propiedad Image

La propiedad Image del control PicBox es una propiedad de solo lectura. Esta Devuelve un controlador o manipulador, proporcionado por Microsoft Windows, para un mapa de bits persistente. Esto quiere decir que, si hemos utilizado los métodos gráficos para crear figuras , imágenes o cualquier dibujo en el control, podemos acceder a la imagen mediante este Handle o controlador.

Este simple ejemplo muestra como grabar en disco un archivo de imagen de mapa de bits ( BMP ) , con el contenido del control utilizando el método savePicture. Pero a diferencia del ejemplo anterior, en el que se pasaba la propiedad Picture a SavePicture, en este caso se pasará como parámetro la propiedad Image, ya que la imagen no es un mapa de bits cargado en la propiedad picture, si no que el dibujo se encuentra realizado mediante los métodos gráficos.

Colocar dos botones ( Command 1 y Command 2) , y un picturebox llamado picture 1

Pegar el Código fuente en el formulario

1.  Option Explicit  

2.    

3.  ' -- Botón para dibujar un texto en el picture  

4.  ' ---------------------------------------------------------  

5.  Private Sub Command1_Click()  

6.      ' -- establecer propiedades  

7.      With Picture1  

8.          .AutoRedraw = True  

9.          .ForeColor = vbRed  

10.         .BackColor = vbBlack  

11.         ' -- escribir el texto  

12.         Picture1.Print "Visual basic"  

13.     End With  

14.       

15.     Command1.Enabled = False  

16.     Command2.Enabled = True  

17.       

18. End Sub  

19.   

20. Private Sub Command2_Click()  

21.     ' -- guardar mapa de bits enviando la propiedad image que apunta al gráfico dibujado  

22.     SavePicture Picture1.Image, "c:imagen.bmp"  

23.     MsgBox "La imagen se guardó en la unidad c:", vbInformation  

24.     ' -- salir del programa  

25.     End  

26. End Sub  

27.   

28. Private Sub Form_Load()  

29.     Command1.Caption = "Escribir texto"  

30.     Command2.Caption = "Guardar imagen en el disco"  

31.     Command2.Enabled = False  

32. End Sub  

 

 

 

 

 
  ProgramasVb Copyright. 2011-2012 All Right Reserved  
 
Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis