Cómo reducir la escala y mostrar imágenes en controles de imagen o imagen en VB
Categoría: Computadora/Red gt; Programación gt; Otros lenguajes de programación
Descripción del problema:
El atributo srtetch del control de imagen. deformará la imagen, AutoRedraw y AutoSize del control de imagen no pueden reducir la imagen de acuerdo con el tamaño del control. ¿Se puede usar la función cargar imagen para mostrar una imagen de tamaño fijo?
Análisis:
Se puede implementar en código.
El siguiente código está extraído de un ejemplo que hice antes. Puede consultarlo. imgPreview es un objeto de imagen.
Tamaño de vista previa de tipo privado
sngLeft As Single
sngTop As Single
sngWidth As Single
sngHeight As Single
intZoon como entero
Tipo final
Privado muPreviewSize como PreviewSize
Privado Const cmChangeSize = 1.2
' Alejar
Private Sub Command1_Click()
Con muPreviewSize
.intZoon = .intZoon - 1
.sngHeight = .sngHeight / cmChangeSize
.sngWidth = .sngWidth / cmChangeSize
imgPreview.Stretch = True
imgPreview.Move .sngLeft, .sngTop, .sngWidth, .sngHeight p >
' Si se ha reducido 9 veces, el botón de alejar no está disponible
If .intZoon lt -9 Then
Command1.Enabled = False p>
Command2.Enabled = True
Else
Command2.Enabled = True
Finalizar si
Finalizar con p>
End Sub
' Ampliar
Private Sub Command2_Click()
Con muPreviewSize
.intZoon = .intZoon 1
.sngHeight = .sngHeight * cmChangeSize
.sngWidth = .sngWidth * cmChangeSize
imgPreview.Stretch = True
imgPreview. Mover .sngLeft, .sngTop , .sngWidth, .sngHeight
' Si se ha ampliado 9 veces, el botón de zoom no está disponible
Si .intZoon gt; p>
Command2.Enabled = False
Command1.Enabled = True
Else
Command1.Enabled = True
Fin Si
Termina con
End Sub
Private Sub Form_Load()
Con muPreviewSize
.intZoon = 0
' 0,5
Para el borde de la imagen
.sngHeight = imgPreview.Height 0.5
.sngWidth = imgPreview.Width 0.5
.sngLeft = imgPreview.Left
.sngTop = imgPreview.Top
Terminar con
Finalizar sub