我应该如何解决VSTO插件DPI感知和显示缩放问题



我正在将Excel VBA外接程序迁移到用C#编写的VSTO外接程序。用户界面将包括一个带有自定义按钮图像的自定义功能区选项卡和五个左右的用户窗体。对于VBA版本,我忽略了DPI感知,没有任何问题。

经过大量研究,我得出结论,使VSTO插件的DPI感知在多个显示系统中完全自动化是一项复杂的任务,可能无法产生100%可靠的结果。相反,我编写了代码(用户可以覆盖(来检索屏幕类属性,这些属性允许我的外接程序检测所有连接的显示器的屏幕分辨率,确定Excel启动的显示器,并对该显示器的最佳按钮图像和用户表单大小进行有根据的猜测。

我意识到我的方法可能不是最先进的,但它并不复杂,而且有效。我是否错过了一种100%一致的方法来检测多台显示器的真实显示比例,或者我的方法听起来是可靠性、简单性和用户体验之间的一个很好的折衷方案?

非常感谢您的任何意见或经验可以分享!

VSTO没有为此提供任何内容。您的自定义功能区UI将随Office应用程序自动缩放。但对于windows窗体,您需要正确设置它们,以便正确地放大/缩小。因此,您的问题仅限于Windows窗体区域。从以下来源阅读有关Windows窗体高DPI支持的更多信息:

  • Windows窗体中的高DPI支持
  • 创建DPI感知应用程序

最新更新