Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo escalar cualquier imagen en VB a un PictureBox de tamaño fijo y mantener la relación de aspecto original de la imagen

Cómo escalar cualquier imagen en VB a un PictureBox de tamaño fijo y mantener la relación de aspecto original de la imagen

PictureBox (cuadro de imagen) es uno de los controles básicos utilizados para mostrar gráficos en Visual Basic. Se utiliza para mostrar información gráfica en una ubicación específica del formulario. Admite archivos de gráficos en múltiples formatos, incluido. archivos de mapa de bits (*.bmp, *.dib), archivos de iconos (*.ico), archivos de cursor (*.cur), metarchivos (*.wmf, *.emf), así como formatos de mapas de bits comprimidos populares en Internet. Archivos JPEG y archivos GIF. La característica más importante es la posibilidad de recurrir a él. Pero PictureBox solo tiene la propiedad de adaptarse automáticamente al tamaño de la imagen, pero no la propiedad de que la imagen se adapte al control.

La pregunta original es "escalar cualquier imagen a un PictureBox de tamaño fijo y mantener la relación de aspecto original de la imagen", lo que significa que la imagen no se puede deformar después de cargarla. Esto es más engorroso, pero el efecto es muy bueno, solo como referencia.

Preparación: Coloque dos controles PictureBox en el formulario. El largo y el ancho de Picture1 deben ser iguales (si según su "

la resolución de PictureBox es 500*200", la La imagen se deformará), un control CommonDialog y un control Command.

El código es el siguiente:

Opción explícita

Subcomando privado1_Click()

Dim imageWidth As Long

Dim imageHeight As Long

CommonDialog1.Filter = "(archivo de imagen)*.BMP; *.JPG; *.JPEG|*.BMP; *.JPG; *.JPEG" 'Se utiliza para seleccionar imágenes

CommonDialog1.FilterIndex = 0

CommonDialog1.Action = 1

Si CommonDialog1.FileName lt;gt "" Entonces

Picture2.Picture = LoadPicture(CommonDialog1.FileName)? 'Cargar la imagen en Pic2

If Picture2.ScaleWidth gt; Picture2.ScaleHeight Then

imageWidth = Picture1.ScaleWidth

imageHeight = Imagen1.ScaleHeight * Imagen2.ScaleHeight / Imagen2.ScaleWidth

Else

imageWidth = Imagen1.ScaleWidth * Imagen2.ScaleWidth / Imagen2.ScaleHeight

imageHeight = Imagen1 .ScaleHeight

Finalizar si

Imagen1.Cls

Imagen1.PaintImagen Imagen2, (Imagen1.ScaleWidth - imageWidth) / 2, (Imagen1. ScaleHeight - imageHeight) / 2, imageWidth, imageHeight, 0, 0, Picture2.ScaleWidth, Picture2.ScaleHeight

Finalizar si

End Sub

Sub privado Form_Load ()

Picture1.AutoRedraw = True 'Volver a dibujar la imagen

Picture1.AutoSize = False 'El tamaño del cuadro de imagen permanece sin cambios

Picture1.Visible = True

Picture1.BackColor = RGB(0, 255, 0) 'Establece el color de fondo del cuadro de imagen

Picture2.AutoSize = True 'Picture2 se escala automáticamente para ajustarse a la imagen y es invisible

Imagen2 .Visible = False

Comando1.Caption = "Seleccionar imagen"

End Sub

Este código pasó el prueba en VB6, y los resultados son los siguientes: