lunes, 12 de abril de 2010

Zoom a picturebox

Simple ejemplo para hacer un zoom a un picturebox en vb.net , indicando un valor de escala para el tamaño de la imagen , y estableciendo la propiedad sizeMode del picture con el valor PictureBoxSizeMode.Zoom

Colocar en un formulario los siguientes controles

Un control Button
Un control NumericUpDown para la escala
Un OpenFileDialog para seleccionar un gráfico
Un Picturebox

Código fuente en el form

Texto planoCopiar código fuenteImprimir
Option Explicit On

Public Class Form1

Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged

' cambia de tamaño el picbox según el valor de escala
Cambiar(PictureBox1, CSng(NumericUpDown1.Value))

End Sub

Sub Cambiar(ByVal Picbox As PictureBox, ByVal Escala As Single)
Dim Ancho As Single, Alto As Single

' si hay una imagen ...
If Not Picbox.Image Is Nothing Then

Picbox.SizeMode = PictureBoxSizeMode.Zoom
With Picbox
' Ancho y alto de la imagen
Ancho = .Image.Width * Escala
Alto = .Image.Height * Escala
.Width = Ancho
.Height = Alto
End With
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
With PictureBox1
.SizeMode = PictureBoxSizeMode.Zoom
End With
With NumericUpDown1
.Maximum = 10 ' valor máximo
.Minimum = 0 ' minimo
.Value = 1
.Increment = 0.1
.DecimalPlaces = 1
End With

Button1.Text = "Seleccionar imagen"
' extensiones
OpenFileDialog1.Filter = "Png|*.png|Bmp|*.bmp|Gif|*.gif|jpg|*.jpg|Ico|*.ico"
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click

With OpenFileDialog1
.FileName = ""
.ShowDialog() ' abre el diálogo
If .FileName <> vbNullString Then
' carga la imagen
PictureBox1.ImageLocation = .FileName
NumericUpDown1.Value = 1
PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
End If
End With
End Sub
End Class

1 comentario:

  1. Muchas gracias por el código, me hacia falta una cosa así. Gracias

    ResponderEliminar