In meiner Anwendung, erhalte ich die Bildschirmauflösung mit diesem Code:Verändert Aero die DPI- und Bildschirmgröße? Warum?
SystemInformation.PrimaryMonitorSize
Und ich die DPI mit diesem Code erhalten:
using (Graphics g = Graphics.FromHdc(NativeMethods.GetDC(IntPtr.Zero)))
{
dpiX = g.DpiX;
dpiY = g.DpiY;
}
Dies funktioniert in den meisten Situationen gut. Wenn der Code jedoch auf einem Vista-Computer ausgeführt wird, auf dem Aero aktiviert ist und der Benutzer den Monitor auf hohe DPI-Werte eingestellt hat, werden bizarre Ergebnisse zurückgegeben.
sagen wir der Benutzer die Maschine eingestellt wurde bei 1024 x 768 laufen und hat die bei 144 DPI, oberhalb der Code wird eine Auflösung von 683 x 512 DPI und der 96.
jedoch zurück, wenn Aero ist ausgeschaltet, die Ergebnisse kommen zurück, als ich sie erwarten würde. Was macht Aero und wie kann ich die wahre Auflösung und DPI bekommen?
+1 Dies ist genau richtig. Microsoft hat es aufgegeben, Entwickler zu bitten, ihre Anwendungen bei anderen dpi-Einstellungen als 96dpi richtig zu machen. Anstatt die meisten Anwendungen zu unterbrechen, wenn der Benutzer High-dpi wählt, haben die Entwickler nun angegeben, dass sie High-dpi unterstützen. Der Benutzer kann weiterhin die Skalierung pro Programm deaktivieren (Rechtsklick, Registerkarte Kompatibilität) –