gpt4 book ai didi

.net - WPF Aero Glass DPI 设置不匹配

转载 作者:行者123 更新时间:2023-12-01 13:09:13 25 4
gpt4 key购买 nike

我有一个使用 Aero Glass 的 WPF 应用程序。在 120dpi 设置下使用应用程序时,我的 UI 内的边距与我传递给 DwmExtendFrameIntoClientArea API 调用的边距不匹配。

我如何在 .NET 3.0 中获取系统 DPI 设置,以便我可以更正传递给 DwmExtendFrameIntoClientArea API 调用的边距?

本质上,WPF UI 使用与设备无关的单位,而 DwmExtendFrameIntoClientArea API 调用使用像素。

谢谢

最佳答案

好的,像下面这样的东西会解决这个问题:

Public Shared Function GetDpiAdjustedMargins(ByVal WindowHandle As IntPtr, ByVal Left As Integer, ByVal Right As Integer, ByVal Top As Integer, ByVal Bottom As Integer) As Margins
'
Dim Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromHwnd(WindowHandle)
Dim DesktopDPIx As Single = Graphics.DpiX
Dim DesktopDPIy As Single = Graphics.DpiY

Dim Margins As Margins = New Margins
Margins.Left = Left * (DesktopDPIx / 96)
Margins.Right = Right * (DesktopDPIx / 96)
Margins.Top = Top * (DesktopDPIx / 96)
Margins.Bottom = Bottom * (DesktopDPIx / 96)
Return Margins
'
End Function



来源:Pro WPF in C# 2008 By Matthew MacDonald

关于.net - WPF Aero Glass DPI 设置不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/438211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com