Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Visual Basic clásico (http://www.forosdelweb.com/f69/)
-   -   Ajustar imagen a control sin deformar (http://www.forosdelweb.com/f69/ajustar-imagen-control-sin-deformar-399616/)

alberanonn 05/06/2006 06:05

Ajustar imagen a control sin deformar
 
Hola, estoy realizando un control ActiveX en Visual Basic 6.0 para usar en una aplicación de un club de Fútbol. El ActiveX tiene 3 controles Image (o Picture me da igual). Cuando le pase el código del jugador y ejecute el método Refresh que le he puesto el ActiveX debe visualizar la foto, el escudo del equipo y un bitmap con la posición en el campo del jugador.

Hasta aquí todo funciona bien, pues ya he diseñado varios ActiveX y esto no representa ninguna complejidad especial.

Lo que me está volviendo loco es el tema de ajustar una imagen al control image o picture. Cuando cargo una imagen y la fuerzo a ajustarse al tamaño del control se deforma según como sea la imagen original y se como hacer que se ajuste sin deformarse.

¿Existe algún código o rutina para ajustar sin deformar o es necesario algún ActiveX mejorado para usar en vez de el PictureBox o Image?

Lo curioso del caso es que el control Image que incorpora el Access 2000 para los formularios incluye la propiedad SizeMode cuyo valor acOLESizeZoom hace precisamente esta función.

Muchas gracias por adelantado.

alberanonn 05/06/2006 16:55

Este es el código que soluciona el problema
 
Option Explicit
Dim ancho As Single, alto As Single, porcentaje As Single
Dim imagen As IPictureDisp

Private Sub Command1_Click()
Picture1.Cls
Set imagen = LoadPicture("I:\System\Easy Plantillas\1724000001.bmp")



ancho = imagen.Width
alto = imagen.Height

If ancho > Picture1.Width Or alto > Picture1.Height Then
If ancho > alto Then
porcentaje = (Picture1.Width * 100) / ancho
Else
porcentaje = (Picture1.Height * 100) / alto
End If
CentrarPicture
Exit Sub
End If

If ancho <= Picture1.Width Or alto <= Picture1.Height Then
If ancho > alto Then
porcentaje = (Picture1.Width * 100) / ancho
Else
porcentaje = (Picture1.Width * 100) / alto
End If
CentrarPicture
End If
End Sub


Public Sub CentrarPicture()
Dim centro1 As Single, centro2 As Single
ancho = (ancho * porcentaje) / 100
alto = (alto * porcentaje) / 100
centro1 = (Picture1.Width - ancho) / 2
centro2 = (Picture1.Height - alto) / 2
Picture1.PaintPicture imagen, centro1, centro2, ancho, alto
End Sub


La zona horaria es GMT -6. Ahora son las 02:01.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.