Ich möchte nicht, dass meine WPF-GUI mit Windows-Schriftgrößenoptionen (DPI) skaliert. Es ist nicht nur eine Frage der Festlegung einer festen Schriftgröße auf dem Benutzersteuerelement, da die Skalierung Bilder und Rahmen im Benutzersteuerelement beeinflusst. Gibt es eine Eigenschaft, die ich auf dem Benutzersteuerelement festlegen kann, um Scalling zu deaktivieren? Wenn nicht, wie kann ich das tun?
Zusätzlich zum DpiDecorator müssen Sie auch die Schriftgröße Ihrer Artikel korrigieren. Wenn Ihre Einstellung beispielsweise in Windows XP auf "Große Schriftarten" eingestellt ist, wird die Schriftgröße für Menüelemente auf 14 festgelegt und ebenfalls mithilfe der DPI-Einstellung hochskaliert. Wenn Sie also Ihre MenuItem-Schriftgröße oder andere UI-Elemente nicht korrigieren Schriftart, erhalten Sie den Standardwert von Windows für diesen Artikeltyp. Denken Sie auch daran, dass ein Benutzer die Schriftgröße / Schriftart für andere Elemente manuell ändern kann ...
Sie können Ihr Benutzersteuerelement basierend auf der aktuellen DPI-Einstellung verkleinern. Wenn Sie beispielsweise Ihr Benutzersteuerelement mit dem folgenden DpiDecorator umschlossen haben, sollte es unabhängig von der DPI-Einstellung identisch aussehen:
%Vor%Oder Sie könnten diese Logik in Ihr Benutzersteuerelement verschieben.
Der Code zum Ermitteln des DPI-Skalierungsfaktors stammt von diesem Blogpost .
Windows enthält einen Kompatibilitätshelfer für fehlerhafte Anwendungen, die unter Einstellungen mit hoher Auflösung fehlschlagen:
Stellen Sie sicher, dass Sie die Option " DPI-Skalierung im Windows XP-Stil verwenden " deaktivieren (oder deaktivieren):
Und stellen Sie sicher, dass Ihre Anwendung in ihrem Assembly-Manifest keinen Eintrag " dpiAware
" hat.
Windows wird Ihre Anwendung belügen, sagen Sie, dass es 96dpi ist, und dann wird die Grafikkarte das gesamte Fenster für Sie skalieren.
Alles wird leicht unscharf und im Allgemeinen unangenehm zu verwenden sein, aber es wird gut genug funktionieren, bis Sie das fehlerhafte WinForm-Steuerelement beheben können.
Hinweis: Mit dem Eintrag
dpiAware
manifest kann Ihre Anwendung Windows mitteilen, dass es die dpi-Skalierung ablehnen möchte. Anwendungen fügen diesen Artikel nur hinzu, wenn sie mit hoher dpi-Auflösung getestet wurden.