Buenas!
La idea central del ejemplo es cargar y mostrar una imagen en su control Picturebox, sin importar su tamaño.
La imagen puede ser más pequeña o más grande que el propio formulario.
El ejemplo mostrará la imagen y recordará mediante los settings, la imagen (su ruta, nombre).
Así ademas podemos abrir el dialogo en la última ruta donde estuvimos. Si es que queremos ver más imágenes.
Este es el formulario
Aquí su distribución:
Código:
Public Sub MostrarImagen(unaimagen As Picture)
'Aquí se encuentra toda la distribución de los organizadores/contenedores del formulario
'He dejado a posta el borde activo para ver como se muestra el espacio ocupado
With Me
.Center()
.Arrangement = Arrange.Horizontal
.Spacing = True
.Margin = True
End With
With Panel1
.Arrangement = Arrange.Vertical
.Spacing = True
.Margin = True
.Border = Border.Plain
End With
'Contenedor padre del PictureBox
With Panel2
.Arrangement = Arrange.Horizontal
.Expand = True
End With
With PictureBox1
.Border = Border.Plain
.Picture = unaimagen
.Expand = True
.Mode = PictureBox.Contain 'La imagen se estrecha para que se ajuste a su contenedor
End With
'El efecto de maximizar puede cambiar la distribución de la imagen y mostrarse de un tamaño distinto o su ajuste en su contenedor
End
Y aquí todo el código completo del ejemplo:
Código:
Private nomimagen As String
Private rutadeimagenes As String
Public Sub Form_Open()
Dim unaimagen As Picture
Me.Title = "Ejemplo con Organizadores"
Settings.Read(Me)
'Imagen por defecto
nomimagen = Settings["Imagen", "Gambas3.png"]
rutadeimagenes = File.RealPath(nomimagen)
unaimagen = Picture.Load(nomimagen)
MostrarImagen(unaimagen)
End
Public Sub MostrarImagen(unaimagen As Picture)
'Aquí se encuentra toda la distribución de los organizadores/contenedores del formulario
'He dejado a posta el borde activo para ver como se muestra el espacio ocupado
With Me
.Center()
.Arrangement = Arrange.Horizontal
.Spacing = True
.Margin = True
End With
With Panel1
.Arrangement = Arrange.Vertical
.Spacing = True
.Margin = True
.Border = Border.Plain
End With
With Panel2
.Arrangement = Arrange.Horizontal
.Expand = True
End With
With PictureBox1
.Border = Border.Plain
.Picture = unaimagen
.Expand = True
.Mode = PictureBox.Contain 'La imagen se estrecha para que se ajuste a su contenedor
End With
'El efecto de maximizar puede cambiar la distribución de la imagen y mostrarse de un tamaño distinto o su ajuste en su contenedor
End
Public Sub btLoadPicture_Click()
Dim unaimagen As Picture
Dialog.Title = Application.Name & ": Selecciona archivo"
Dialog.Filter = ["*.jpg;*.jpeg;*.png;*.bmp;*.ico;*.xpm", "Ficheros de imágenes"]
Dialog.Path = rutadeimagenes
If Dialog.OpenFile() Then Return
nomimagen = Dialog.Path
unaimagen = Picture.Load(nomimagen)
MostrarImagen(unaimagen)
End
Public Sub btnExit_Click()
Me.Close
End
Public Sub Form_Close()
Settings.Write(Me)
Settings["Imagen"] = nomimagen
Settings.Save()
End
Se debe probar con distintas imágenes para ver que hace con las dimensiones.
Por defecto he usado la del logo de Gambas3. Pero se puede usar otras del pc, cargando la que os interese.
Saludos