• Lunes 29 de Abril de 2024, 00:35

Autor Tema:  Re: picturebox desplazable dentro de un formulario  (Leído 1474 veces)

graciela

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: picturebox desplazable dentro de un formulario
« en: Miércoles 29 de Enero de 2003, 05:10 »
0
Alguien me puede ayudar con las lineas sgtes dado que segun la ayuda del VB puedo hacer, dentro de un formulario, un picturebox desplazable dentro de otro picturebox pero el mismo no funciona.
Cual es el error que cometo? como tienen que estar seleccionadas las opciones autoredraw, autosize,  de cada uno de los controles?????

El evento Form_Load del formulario se utiliza para establecer el modo de escala, ajustar el tamaño del cuadro de imagen secundario dentro del cuadro de imagen primario, colocar y ajustar el tamaño de las barras de desplazamiento horizontal y vertical y, después, cargar un gráfico de mapa de bits. Agregue el código siguiente al procedimiento de evento Form_Load del formulario:

Private Sub Form_Load()

   ' Establece ScaleMode a píxeles.
   Form1.ScaleMode = vbPixels
   Picture1.ScaleMode = vbPixels

   ' Autosize se establece a True para que los bordes
   ' de Picture2 se ' expandan al tamaño del
   ' mapa de bits real.
   Picture2.AutoSize = True

   ' Establece el BorderStyle de cada cuadro ' de imagen a Ninguno.
   Picture1.BorderStyle = 0
   Picture2.BorderStyle = 0

   ' Carga el mapa de bits.
   Picture2.Picture = _
   LoadPicture("c:WindowsWinlogo.bmp")

   ' Inicializa la ubicación de ambas imágenes.
   Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, _
   ScaleHeight - HScroll1.Height
   Picture2.Move 0, 0

   ' Coloca la barra de desplazamiento horizontal.
   HScroll1.Top = Picture1.Height
   HScroll1.Left = 0
   HScroll1.Width = Picture1.Width

   ' Coloca la barra de desplazamiento vertical.
   VScroll1.Top = 0
   VScroll1.Left = Picture1.Width
   VScroll1.Height = Picture1.Height

   ' Establece la propiedad Max de las ' barras de desplazamiento.
   HScroll1.Max = Picture2.Width - Picture1.Width
   VScroll1.Max = Picture2.Height - Picture1.Height

   ' Determina si la imagen secundaria cabe en la
   ' pantalla.
   Si es así, no son necesarias las ' barras de desplazamiento.
   VScroll1.Visible = (Picture1.Height < _
   Picture2.Height)
   HScroll1.Visible = (Picture1.Width < _
   Picture2.Width)

End Sub

El evento Change de los controles HScrollBar y VScrollBar se utiliza para mover el cuadro de imagen secundario de arriba abajo y de izquierda a derecha dentro del cuadro de imagen primario. Agregue el código siguiente al evento Change de ambos controles ScrollBar:

Private Sub HScroll1_Change()
   Picture2.Left = -HScroll1.Valor
End Sub

Private Sub VScroll1_Change()
   Picture2.Top = -VScroll1.Valor
End Sub

Las propiedades Left y Top del cuadro de imagen secundario se establecen al valor negativo de las barras de desplazamiento horizontal y vertical para que al desplazarse de arriba a abajo y de izquierda a derecha, la vista se mueva correctamente.


Cambiar el tamaño del formulario en tiempo de ejecución
En el ejemplo anterior, el tamaño visible del gráfico está limitado por el tamaño original del formulario. Para cambiar el tamaño de la aplicación de vista de gráficos cuando el usuario ajuste el tamaño del formulario en tiempo de ejecución, agregue el código siguiente al procedimiento de evento Form_Resize del formulario:

Private Sub Form_Resize()
   ' Cuando cambia el tamaño del formulario, cambian
   ' las dimensiones de Picture1.
   Picture1.Height = Form1.Height
   Picture1.Width = Form1.Width

   ' Reinicializa la posición de la imagen y de las
   ' barras de desplazamiento.
   Picture1.Move 0, 0, ScaleWidth - VScroll1.Width, _
   ScaleHeight - HScroll1.Height
   Picture2.Move 0, 0
   HScroll1.Top = Picture1.Height
   HScroll1.Left = 0
   HScroll1.Width = Picture1.Width
   VScroll1.Top = 0
   VScroll1.Left = Picture1.Width
   VScroll1.Height = Picture1.Height
   HScroll1.Max = Picture2.Width - Picture1.Width
   VScroll1.Max = Picture2.Height - Picture1.Width

   ' Comprueba si son necesarias las ' barras de desplazamiento.
   VScroll1.Visible = (Picture1.Height < _
   Picture2.Height)
   HScroll1.Visible = (Picture1.Width < _
   Picture2.Width)

End Sub

MUCHISIMAS GRACIAS POR LA AYUDA

hjom

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
    • http://www.hjom.itgo.com
picturebox desplazable dentro de un formulario
« Respuesta #1 en: Miércoles 29 de Enero de 2003, 06:09 »
0
el unico error que veo es que no es

Private Sub HScroll1_Change()
Picture2.Left = -HScroll1.Valor
End Sub

Private Sub VScroll1_Change()
Picture2.Top = -VScroll1.Valor
End Sub

si no

Private Sub HScroll1_Change()
Picture2.Left = HScroll1.Valor
End Sub

Private Sub VScroll1_Change()
Picture2.Top = VScroll1.Valor
End Sub

por que???

porque los valores de top y de left empiezan desde cero cuando estan dentro de algunos controles como el picture, los controles scroll cuando cambia ellos te entregan un valor entre min o max, osea que cuando cambian por ejemplo

min=0
max=100
value<=100 y value>=0

como comentario podrias cambiar a el picture2 por un image porque es mucho mas libiano y funciona mejor.
HJOM