簡體   English   中英

WPF航空玻璃DPI設置不匹配

[英]WPF Aero Glass DPI Setting Mismatch

我有一個使用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



資料來源: C#2008中的Pro WPF作者:馬修麥克唐納

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM