Macro de Word VBA: Ajustar la imagen a la forma
Me gustaría ajustar la imagen a la forma. El código es simple:
Function CmPt(cm As Single) As Single
' Convertir centímetros a puntos.
CmPt = Application.CentimetersToPoints(cm)
End Function
Sub InsertCanvas()
' Insertar lienzo de imagen de rompecabezas en el documento.
Dim edge As Single
edge = CmPt(4)
Dim canvas As Shape
Set canvas = ActiveDocument.Shapes.AddShape(Type:=msoShapeRectangle, Left:=CmPt(2.5), Top:=CmPt(2.5), Width:=edge, Height:=edge, Anchor:=Selection.Paragraphs(1).Range)
Dim image_path As String
image_path = ActiveDocument.Path & Application.PathSeparator & "images" & Application.PathSeparator & "image.jpeg"
With canvas
.Line.Weight = 1
.Line.ForeColor.RGB = RGB(64, 64, 64)
.Fill.Visible = msoTrue
.Fill.BackColor.RGB = RGB(255, 255, 255)
.Fill.UserPicture image_path
End With
End Sub
Pero ahora, la imagen está llenando el cuadro. Me gustaría ajustar la imagen. Sé que Word puede hacerlo, pero creo que tengo que calcularlo desde la relación de aspecto original. ¿Es posible obtener el tamaño original de la .UserPicture
? ¿O es posible obtener el ancho y alto de cualquier imagen en el disco duro sin insertar la imagen en el documento? Gracias
davy.ai
Para ajustar la imagen a la forma, es necesario calcular la relación de aspecto de la imagen original y ajustar el tamaño del lienzo en consecuencia. Aquí hay un código actualizado que debería funcionar:
El código utiliza el Componente de Imagen de Windows (WIC) para cargar el archivo de imagen y calcular su ancho y altura originales. Luego calcula la relación de aspecto y ajusta el tamaño del lienzo en consecuencia. Finalmente, cambia el tamaño del lienzo para ajustarse a la imagen y bloquea la relación de aspecto.
Ten en cuenta que debes agregar una referencia al “Componente de Imagen de Windows” en el Editor de VBA (Herramientas > Referencias > Microsoft Windows Imaging Component).