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");
}
就像Passant提到的一样,DisableDpiAwareness非常有效!