Désaccord entre les paramètres DPI de WPF Aero Glass
-
22-07-2019 - |
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
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow