【发布时间】:2016-02-04 01:44:26
【问题描述】:
我正在尝试在 WinForms 应用程序中检测它是否由于操作系统具有高 DPI 而以缩放/虚拟化模式启动。目前,在一个运行在 3840x2400 且缩放比例为 200% 的系统中,应用程序看到的分辨率为 1920x1200,DPI 为 96,比例因子为 1。
我们正在使应用程序具有 DPI 感知能力,但在此之前,我们需要一个“快速修复”来检测是否缩放。这样做的原因是它破坏了应用程序中截取屏幕截图的功能。我们在 Graphics.CopyFromScreen 中使用了缩放尺寸,它会截取错误尺寸的屏幕截图,因为它需要的是非缩放尺寸。
我知道 DPI 感知设置,但目前,我们仍然希望应用程序被缩放,但如果可能的话,能够检测到我们被缩放并获得未缩放的尺寸。
【问题讨论】:
-
将截屏代码移动到另一个是 dpiaware的应用程序中。
-
@HansPassant 这是一个很好的建议,但是我们通过远程桌面服务将这个应用程序作为 RemoteApp 提供服务,这确实使这种方法变得复杂。