2010-11-25 16 views
3

Ich entwickle eine Windows Forms-Anwendung mit VS2008 unter Windows Vista. Ich habe neulich versucht, meine Anwendung auf Windows XP auszuführen, und alles auf der GUI war durcheinander. Ich erkannte, dass ich die Anwendung unter Verwendung von 120 dpi auf Windows Vista entwickelt hatte und mein XP auf 96 dpi eingestellt war.Visual Studio und DPI Problem

Meine Anwendung hat mehrere UserControls und alle schrumpfen sogar im Visual Studio selbst, wenn ich meine DPI auf 96 ändere. Ich bin sicher, dass viele Leute Visual Studio heutzutage in hohen DPIs verwenden. Wie kann ich also sicherstellen, dass meine GUI nicht in Visual Studio und Runtime durcheinander gebracht wird?

EDIT: Ich habe paar Artikel zu diesem Thema gelesen und ich habe gelernt, dass ich AutoScaleMode auf None setzen sollte. Das hindert meine Labels jedoch nicht daran, neue DPI-Einstellungen anzupassen, die vom Betriebssystem erzwungen werden. Ich brauche einen Weg, um zu verhindern, dass meine Labels wachsen/schrumpfen, weil andere GUI-Elemente feste Größen haben.

Antwort

0

Es ist eine Weile her, dass ich an diesem Problem gearbeitet habe, aber versuche AutoSize = False einzustellen. Darüber hinaus kann UseCompatibleTextRendering = True hilfreich sein.

0

Dies ist eine ziemlich alte Frage, aber ich möchte meine Lösung/Meinung teilen. Ich bin kürzlich auf ein ähnliches Problem gestoßen. Eigentlich möchte ich, dass Visual Studio meine WinForms so behält, wie sie sind, aber zur Laufzeit skalieren. Ich habe keine konsistente Zusammenfassung darüber gefunden, wie man das richtig macht. Nach einigem Lesen und Experimentieren kam ich zu dieser Lösung:

  • Halten Sie die Form AutoScaleMode = Font.
  • Sets in Ihrem Designer Forms: Font = MS Sans; 11px
  • in den Formen Ctor nach InitializeComponent, Set: Font = SystemFonts.DefaultFont
  • aktivieren DPI-Bewusstsein, entweder durch ein Manifest oder durch API-Funktion SetProcessDPIAwareness

Da Autoscale bleibt aktiv, alle DPI-ändernde Magie funktioniert, sogar pro-Monitor DPI-Bewusstsein. Was bleibt, ist das Design von Forms so, dass die Skalierung gut funktioniert.

Ich schrieb die Details auf meinem Blog: http://www.sgrottel.de/?p=1581&lang=en