Colabora |
Mostrar imágenes sin perder proporciónComo cargar imágenes en un componente image sin perder la proporción de alto y ancho
Fecha: 15/Oct/2008 (09-10-08)
|
IntroducciónEn 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. ContenidoHasta 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:
Comentarios adicionalesEn 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. |
Lo comentado en este artículo está probado (y funciona) con la siguiente configuración:
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:
Gracias.
Código de ejemplo (comprimido): |
Fichero con el código de ejemplo: n1mte_imagenes_vb6.zip - 275.00 KB
|