2009-01-13 5 views
3

J'ai une application WPF utilisant Aero Glass. Lorsque vous utilisez l'application avec un paramètre de 120 ppp, les marges de mon interface utilisateur ne correspondent pas aux marges que je passe à l'appel de l'API DwmExtendFrameIntoClientArea.WPF Aero Verre Réglage de la résolution de la résolution d'erreur

Comment puis-je obtenir le paramètre DPI du système dans .NET 3.0 afin de pouvoir corriger la marge que je passe à l'appel de l'API DwmExtendFrameIntoClientArea? L'interface utilisateur WPF utilise essentiellement des unités indépendantes du périphérique, tandis que l'appel API DwmExtendFrameIntoClientArea utilise des pixels.

Merci

Répondre

4

D'accord, quelque chose comme ce qui suit va résoudre le problème:

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 



Source: Pro WPF in C# 2008 By Matthew MacDonald

Questions connexes