为何VBA用户窗体自适应Image控件在不同显示缩放比例下渲染异常?
VBA用户窗体高DPI显示缩放适配异常问题
问题背景
制作了一个VBA用户窗体原型,用于根据Windows显示缩放比例加载对应尺寸的图片,测试场景覆盖100%缩放(96DPI)和200%缩放(192DPI):
- 1x图:500×500px BMP
- 2x图:1000×1000px BMP
按照像素转磅值的标准比例(0.75,即72/96),将Image控件设置为375pt×375pt。在100%显示缩放比例下,加载1x图后,Image控件能按预期渲染为500×500像素。
但切换到200%显示缩放(需重启Office宿主应用)后,加载2x图到同尺寸的Image控件时,实际渲染尺寸为1072×1072像素,且出现缩放失真。必须应用**0.933(1000/1072)**的修正系数,才能让图片按预期1000×1000像素无失真渲染。该问题在Parallels虚拟机和Windows Surface设备上均能复现。
复现步骤
- 创建VBA用户窗体项目,添加两个Image控件(
Image1和Image2x),均设置为375pt×375pt,缩放模式设为Zoom - 向
Image1加载500×500px的BMP图,向Image2x加载1000×1000px的BMP图 - 在100%显示缩放比例下运行用户窗体,验证显示效果;之后关闭Office宿主应用,将系统显示缩放改为200%,重启PowerPoint后再次运行用户窗体查看效果
补充更新
更新:测试其他尺寸图片后,出现了更异常的显示结果。
内容的提问来源于stack exchange,提问作者Jamie Garroch - MVP
相关产品推荐
相关产品推荐

