Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Ajustar imagen a control sin deformar

Estas en el tema de Ajustar imagen a control sin deformar en el foro de Visual Basic clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/06/2006, 06:05
 
Fecha de Ingreso: febrero-2005
Mensajes: 28
Antigüedad: 19 años, 3 meses
Puntos: 1
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.
  #2 (permalink)  
Antiguo 05/06/2006, 16:55
 
Fecha de Ingreso: febrero-2005
Mensajes: 28
Antigüedad: 19 años, 3 meses
Puntos: 1
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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:59.