不同DPI比例因子的DPI意识奇怪行为

问题描述

有人可以解释这种奇怪的现象吗?

创建了Winforms应用程序.NETFramework 4.7。

this.AutoScaleDimensions = new System.Drawing.Sizef(6F,13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

创建了一个面板,并将其位置从左到上设置为100,将其大小的宽度设置为100。

根据here

  1. 创建app.manifest并启用Windows 10兼容性
  2. 创建了app.config并将value="PerMonitorV2"更改为 Unaware 系统 PerMonitor ,然后是 PerMonitorV2 。
<System.Windows.Forms.ApplicationConfigurationSection>
    <!--<add key="DpiAwareness" value="Unaware"/>-->
    <add key="DpiAwareness" value="System"/>
    <!--<add key="DpiAwareness" value="PerMonitor"/>-->
    <!--<add key="DpiAwareness" value="PerMonitorV2"/>-->
</System.Windows.Forms.ApplicationConfigurationSection>

然后,对于每次感知更改,我的确将主屏幕DPI缩放比例从100%更改为175。每次在InitializeComponent();之后记录面板位置及其大小,都会运行该应用程序。

以下是结果:

Awareness: Unaware  
DPI:  96 (100%) -> Left: 100,Width: 100,Top: 100,Height: 100    
DPI: 120 (125%) -> Left: 100,Height: 100    
DPI: 144 (150%) -> Left: 100,Height: 100    
DPI: 168 (175%) -> Left: 100,Height: 100  

Awareness: System Aware  
DPI:  96 (100%) -> Left: 100,Height: 100    
DPI: 120 (125%) -> Left: 133,Width: 133,Top: 123,Height: 123 ?!    
DPI: 144 (150%) -> Left: 150,Width: 150,Top: 154,Height: 154 ?!    
DPI: 168 (175%) -> Left: 183,Width: 183,Top: 185,Height: 185 ?!   

Awareness: Per-Monitor Aware  
DPI:  96 (100%) -> Left: 100,Height: 100  

Awareness: Per-Monitor Aware v2  
DPI:  96 (100%) -> Left: 100,Height: 100   

在(意识:系统意识,125%,150%,175%)情况下,有人有任何想法或知识来解释这种奇怪的行为吗?

修改
如果是125%,我不知道133、123的来源。 在150%的情况下,接缝有一定的逻辑,但对于154没有。 同样在175%的情况下,我不能提出任何逻辑。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...