Question

J'ai une application WPF utilisant Aero Glass. Lors de l'utilisation de l'application sous un paramètre de 120 ppp, les marges de mon interface utilisateur ne correspondent pas aux marges, je passe à l'appel de l'API DwmExtendFrameIntoClientArea.

Comment puis-je obtenir le paramètre DPI des systèmes dans .NET 3.0 pour pouvoir corriger la marge que je passe à l'appel d'API DwmExtendFrameIntoClientArea?

L’interface utilisateur WPF utilise essentiellement des unités indépendantes du périphérique, alors que l’appel DwmExtendFrameIntoClientArea API utilise des pixels.

Merci

Était-ce utile?

La solution

D'accord, le problème suivant sera résolu:

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: "> WPF Pro en C # 2008 par Matthew MacDonald

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top