我们有一个遗留的.net
Windows窗体应用程序.
我们已经用Web应用程序替换了大部分内容,但仍然使用Windows窗体应用程序来执行管理任务.
我们已经用Web应用程序替换了大部分内容,但仍然使用Windows窗体应用程序来执行管理任务.
当这个应用程序在4k显示器上使用时,它看起来非常糟糕,这是可以理解的.
但外观会根据系统上的其他显示器而变化.
测试是在lenovo 430上完成的,它有一个4k显示器通过显示端口连接.
笔记本电脑显示器的分辨率为1920/1080,而4k显示器的分辨率为3840/2160.显示比例始终为200%.
所有以下屏幕截图均在4k显示器上拍摄.
>两个监视器都处于活动状态的测试
>仅使用第二个屏幕进行一次测试
>关闭笔记本电脑的一次测试(这意味着只有一台显示器可供系统使用)
我知道如果没有更改并设置dpiAware / dpiAwareness,我们的应用程序在4k上看起来不会很好.
但我的问题是:
为什么应用程序只会根据哪些监视器处于活动状态而发生变化?有没有办法控制哪种“外观”?
解决方法
也许你知道这一点,但之前没有提到:
有3种应用:
>不支持DPI
>系统DPI识别
>每个监视器DPI识别
详细信息:
https://msdn.microsoft.com/de-de/library/windows/desktop/dn469266(v=vs.85).aspx
您可以在app.config中设置应用程序的DPI感知:
<appSettings> <add key="EnableWindowsFormsHighDpiAutoResizing" value="false" /> </appSettings>
和app.manifest:
<application xmlns="urn:schemas-microsoft-com:asm.v3"> <windowsSettings> <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware> </windowsSettings> </application>
当你有DPI> = 150%时,可以另外控制缩放比例
人民币申请 – >属性 – >兼容性 – >扩展高DPI
对于Windows窗体,默认情况下DPI-Scaling禁用高DPI.所以一切都应该开箱即用.也许其中一个设置不是默认设置?特别是关于exe的RMB属性的配置?