Вы находитесь на странице: 1из 3

Mostrar imágenes sin perder proporción

Como cargar imágenes en un componente image sin perder la proporción de alto y


ancho

Fecha: 15/Oct/2008 (09-10-08)


Autor: Mariano Torres - n1mte@yahoo.com.mx

Introducción
En este articulo se muestra la forma de cargar imagenes en un componente image sin que se
pierda la proporcion de altura y anchura de la imagen. Opcionalmente se puede centrar para
que de una mejor presentacion.
Contenido
Hasta ahora los metodos que encontre para centrar imagenes en Visual Basic 6 incluian
llamadas a API's del sistema, no es complicado para programadores intermedio y
avanzados. Y los pocos ejemplos que no incluian API's, eran ejemplos para VB.Net. Por
eso me di a la tarea de buscar un metodo mas sencillo, sin entrar al manejo de API's,
pensando en programadores de nivel basicos, y programadores que gusten de simplicidad
de codigo.
Colocando un componente image dentro de un picture, y usando unas pocas lineas de
codigo, se puede ajustar la imagen sin perder su proporcion de altura y anchura.
El el codigo de ejemplo, la subrutina la llamo desde dos eventos diferentes: desde el evento
Form_Resize, y el evento File1_Click
El código:
Sub CentrarImagen()
'Variable que almacenara la proporcion a reducir
Dim Prop As Double

'Dejamos que la imagen se amplie a su tamaño original


'Esto es necesario para calcular la proporcion a reducir de la imagen
Image1.Stretch = False

'Calculamos la proporcion de lo ancho


Prop = Picture1.Width / Image1.Width

'Si la proporcion de lo alto es menor, tomanos esa nueva proporcion


If (Picture1.Height / Image1.Height) < Prop Then
Prop = Picture1.Height / Image1.Height
End If
'Reducimos la imagen con la proporcion calculada
Image1.Width = Image1.Width * Prop
Image1.Height = Image1.Height * Prop

'Opcionalmente podemos centrar la imagen dentro del picture


'Si no se quiere centrar, comentamos las siguientes 2 lineas
Image1.Top = (Picture1.Height - Image1.Height) / 2
Image1.Left = (Picture1.Width - Image1.Width) / 2

'Ajustamos la imagen al control image


Image1.Stretch = True

End Sub
Nota:
Reemplazar el nombre del control image1 y picture1 por los nombres de tus controles
image y picture respectivamente que tu proyecto

Comentarios adicionales
En el primer proyecto que implemente este codigo, por alguna extraña razon las
propiedades Picture1.Height y Picture.Width me devolvian un valor de 0, obviamente la
imagen no me aparecia. Si este es tu caso, unicamente fijate el valor de alto y ancho de tu
componente Picture y lo colocas directamente en el codigo, en los lugares correspondientes.

Compromiso del autor del artículo con el sitio del Guille:


Lo comentado en este artículo está probado (y funciona) con la siguiente configuración:
 Sistema operativo:
o Windows Windows XP Profesional Version 2002 Service Pack 2
 IDE (entorno de desarrollo):
o Visual Basic 6.0 Enterprise
 Base de datos:
o No se usa base de datos
El autor se compromete personalmente de que lo expuesto en este artículo es cierto y lo ha
comprobado usando la configuración indicada anteriormente.
En cualquier caso, el Guille no se responsabiliza del contenido de este artículo.
Si encuentras alguna errata o fallo en algún link (enlace), por favor comunícalo usando este
link:
Error en el artículo Mostrar_imagenes_sin_perder_proporcion
Gracias.

Вам также может понравиться