WPF应用程序中的Dpiaware=false

本文关键字:false Dpiaware 应用程序 WPF | 更新日期: 2024-04-23 19:09:06

我有一个承载winforms控件的WPF应用程序。当我在Windows 8.1中运行该应用程序时。Ui很乱。作为解决方案,我正在更改系统DPi和分辨率设置。我一直想让应用程序的dpiaware成为假的。根据我的研究,我知道我可以使用清单或使用shcore.dll(win8.1)中的api setdpiawareness。清单更适合我。我已经选中了禁用WPF应用程序的DPI感知。

我的查询更多的是关于清单,我正在编写一个示例应用程序,以使dpiaware为false。我已经嵌入了清单,下面是它的样子。

 <asmv3:application>
  <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
    <dpiAware>false</dpiAware>
  </asmv3:windowsSettings>
</asmv3:application>

我试着运行以下内容,每次Dpiaware的价值都是真实的。清单上有我做错的事吗?或者有其他选择吗?

[DllImport("user32.dll", SetLastError = true)]
static extern bool IsProcessDPIAware();
protected override void OnStartup(StartupEventArgs e)
{
    Process_DPI_Awareness p;
    p = 0;
    base.OnStartup(e);
    bool h = IsProcessDPIAware();
    if(h)
        MessageBox.Show("Dpi is 1");
    else
        MessageBox.Show("Dpi is not true");
}

WPF应用程序中的Dpiaware=false

就像Passant提到的一样,DisableDpiAwareness非常有效!