【问题标题】:PowerPoint VBA import image, then resize with constant aspect ratioPowerPoint VBA 导入图像,然后以恒定纵横比调整大小
【发布时间】:2016-05-27 22:42:01
【问题描述】:

我正在尝试按照标题中所说的去做。我的 Sub 包括:

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 磅,但宽度保持不变。有什么想法我错了吗?

【问题讨论】:

    标签: vba powerpoint


    【解决方案1】:

    使用

    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 条路径:

    1. 更新你的图片文件以满足你真正需要的宽高比,然后使用上面的方法。

    2. 通过计算高度/宽度并设置它们而不是使用 .lockaspectratio 以编程方式设置所需的纵横比。

    【讨论】:

    • 感谢您的回答,但它似乎并没有改变任何东西 - 降低图像高度时纵横比仍然会发生变化。还有其他想法吗?
    • @NilsGudat 更新了答案以包含更多内容。这有帮助吗?
    • 是的,完美,只是不指定高度并在加载图片后修改它,效果很好!真的不明白为什么,但我会接受它!
    猜你喜欢
    • 2017-08-10
    • 1970-01-01
    • 2013-06-26
    • 2012-04-15
    • 2012-05-01
    • 2013-09-09
    相关资源
    最近更新 更多