PowerPoint VBA 导入图像,然后以恒定纵横比调整大小
PowerPoint VBA import image, then resize with constant aspect ratio
我正在尝试按照标题中的说明进行操作。我的子包括这个:
Set oPic = oSld.Shapes.AddPicture(FileName:=strPath & strTemp, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=35, _
Top:=260, _
Width:=-1, _
Height:=245)
oPic.LockAspectRatio = msoCTrue
oPic.Height = 255
但由于某种原因,纵横比实际上并没有锁定——图像高度被减小到 255 点,但宽度保持不变。知道我错了什么吗?
使用
oPic.LockAspectRatio = msoTrue
不是,msoCTrue
我可以使用您的代码重现您的问题,并且我可以通过在加载图片时不指定高度来使图片正常运行:
Set oPic = oSld.Shapes.AddPicture(FileName:=strPath & strTemp, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=35, _
Top:=260, _
Width:=-1, _
Height:=-1)
oPic.LockAspectRatio = msoTrue
oPic.Height = 255
看起来纵横比来自图片数据 -- 而不是来自您当前的图片缩放比例。如果这仍然不能达到您的需要,我可以看到 2 条路径:
更新您的图片文件以满足您真正需要的宽高比,然后使用上面的方法。
通过计算 height/width 并设置它们而不是使用 .lockaspectratio,以编程方式设置所需的纵横比。
我正在尝试按照标题中的说明进行操作。我的子包括这个:
Set oPic = oSld.Shapes.AddPicture(FileName:=strPath & strTemp, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=35, _
Top:=260, _
Width:=-1, _
Height:=245)
oPic.LockAspectRatio = msoCTrue
oPic.Height = 255
但由于某种原因,纵横比实际上并没有锁定——图像高度被减小到 255 点,但宽度保持不变。知道我错了什么吗?
使用
oPic.LockAspectRatio = msoTrue
不是,msoCTrue
我可以使用您的代码重现您的问题,并且我可以通过在加载图片时不指定高度来使图片正常运行:
Set oPic = oSld.Shapes.AddPicture(FileName:=strPath & strTemp, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=35, _
Top:=260, _
Width:=-1, _
Height:=-1)
oPic.LockAspectRatio = msoTrue
oPic.Height = 255
看起来纵横比来自图片数据 -- 而不是来自您当前的图片缩放比例。如果这仍然不能达到您的需要,我可以看到 2 条路径:
更新您的图片文件以满足您真正需要的宽高比,然后使用上面的方法。
通过计算 height/width 并设置它们而不是使用 .lockaspectratio,以编程方式设置所需的纵横比。