网上有很多关于通过调用为 Winforms 应用程序设置 DPI 感知的帖子SetProcessDPIAware()
(或者通过对应用程序的清单进行一些相关更改)。例如:
如何配置应用程序以在具有高 DPI 设置(例如 150%)的计算机上正确运行? https://stackoverflow.com/questions/13228185/how-to-configure-an-app-to-run-correctly-on-a-machine-with-a-high-dpi-setting-e
但是,我不确定如何以及在何处调用 SetProcessDPIAware()VSTO 插件我已经尝试了一段时间,但无法使其工作,因为加载项的各种 Winform 在高 DPI 显示器上仍然无法正确缩放。
任何人都可以提供有关如何在 VSTO 加载项中实现 DPI 感知的指导吗?
您无法在此处影响 DPI 感知,因为这是每个进程的设置,并且您的进程是 Excel 本身(可感知 DPI)。
您只能使用SetProcessDPIAware()
仅在您的程序调用第一个与 DPI 相关的 Windows 函数之前才调用该函数,而 Excel 早在您的加载项启动之前就执行了该操作。
但是,当启用 DPI 感知时,不要指望 Winform 能够像魔术一样正确缩放。启用 DPI 感知意味着:打开潘多拉魔盒,享受 Winforms 为您提供的所有令人讨厌的高 DPI 效果。您将不得不自己调整控制距离和大小。
微软官方声明:
如果你想要DPI感知,不要使用Winforms,使用WPF
如果你想要触摸,不要使用WPF,使用UWP......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)