c# – 为什么winform在同一台4k显示器上显示不同

前端之家收集整理的这篇文章主要介绍了c# – 为什么winform在同一台4k显示器上显示不同前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有一个遗留的.net 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>@H_502_36@ 
 

和app.manifest:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
  <windowsSettings>
    <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</dpiAware>
  </windowsSettings>
</application>@H_502_36@ 
 

当你有DPI> = 150%时,可以另外控制缩放比例
人民币申请 – >属性 – >兼容性 – >扩展高DPI

对于Windows窗体,默认情况下DPI-Scaling禁用高DPI.所以一切都应该开箱即用.也许其中一个设置不是默认设置?特别是关于exe的RMB属性的配置?

猜你在找的C#相关文章