WPF应用程序中的Dpiaware = false

时间:2015-02-12 13:03:38

标签: c# .net wpf windows

我有一个托管winforms控件的WPF应用程序。当我在Windows 8.1中运行该应用程序时。 Ui很混乱。作为解决方法,我正在改变系统DPi和分辨率设置。我想要的是将应用程序的dpiaware设为false。根据我的研究,我知道我可以使用清单或使用shcore.dll(win8.1)中的api setdpiawareness。清单更适合我。我查了Disable DPI awareness for WPF application

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

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

我正在尝试运行下面的每次Dpiaware的值为true。我在清单中做错了什么?还是其他选择?

[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");
}

1 个答案:

答案 0 :(得分:0)

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