Freigeben über


Beheben von HDPI-/Skalierungsproblemen mit Windows Forms Designer in Visual Studio

In diesem Artikel erfahren Sie, wie Sie Renderingprobleme aufgrund von Skalierungseinschränkungen des Windows Forms-Designers auf HDPI-Monitoren beheben können, indem Sie Visual Studio als NICHT-DPI-Prozess ausführen. HDPI steht für hohe Punkte pro Zoll, wobei jeder Punkt ein physisches Gerätepixel darstellt.

Eine höhere Pixeldichte erzeugt schärfere Bilder, und die Elemente werden korrekt skaliert. Ohne ordnungsgemäße Skalierung sind UI-Elemente und Text zu klein, um effektiv genutzt zu werden, und können sich überlappen. Um dieses Problem zu beheben, skaliert Windows das UI-Quantil automatisch entsprechend der DPI-Einstellung. Beispielsweise stellt eine DPI-Einstellung von 100% 96 DPI dar und 125% ist 120 DPI. Monitore, die mit 96 Pixeln pro Zoll ausgeliefert wurden, was Windows als Basislinie für das 100% Bitmapzeichnen verwendete. Da die Displaytechnologie jedoch weiterentwickelt wurde, werden Monitore jetzt mit Panels mit 300 DPI oder höher ausgeliefert.

Wenn eine Anwendung sich selbst als DPI-fähig deklariert, ist es eine Anweisung, die angibt, dass sich die App bei höheren DPI-Einstellungen gut verhält und Windows die automatische Skalierung anwenden kann. Umgekehrt rendern nicht DPI-bewusste Anwendungen mit einem festen DPI-Wert von 96 Pixel pro Zoll oder 100%, sodass die automatische Skalierung entfällt.

Windows Forms Designer ist nicht DPI-bewusst.

Hinweis

In Visual Studio 2022, Version 17.8 oder höher, können Sie die in diesem Artikel beschriebenen Probleme vermeiden. Visual Studio 2022, Version 17.8, bietet Unterstützung für DPI-unabhängige Registerkarten in einer DPI-fähigen Anwendung. Weitere Informationen finden Sie unter Visual Studio-DPI-Verbesserungen. Auf diese Weise können Sie Windows Forms für Nicht-DPI-Kontexte entwerfen, ohne dass Sie Visual Studio im DPI-Nicht-Modus ausführen müssen. Wenn Sie diese Einstellung in einem Windows Forms-Projekt verwenden möchten, legen Sie die Eigenschaft ForceDesignerDPIUnawaretrue in Der Projektdatei fest.

Die ForceDesignerDpiUnaware Projekteigenschaft wird nur für Windows Forms-Projekte unterstützt, die auf .NET 6 oder höher ausgerichtet sind. Projekte für .NET Framework (einschließlich .NET Framework 4.8) verwenden diese Einstellung nicht; der Designer wird weiterhin mit dem standardmäßigen DPI-Verhalten ausgeführt.

<PropertyGroup>
  ...
  <ForceDesignerDPIUnaware>true</ForceDesignerDPIUnaware>
</PropertyGroup>

Standardmäßig ist Visual Studio eine DPI-bewusste Anwendung, was bedeutet, dass die Anzeige automatisch skaliert wird. Der Windows Forms Designer ist jedoch eine nicht DPI-bewusste App, sodass er als Bitmap mit 96 DPI angezeigt wird. Ohne unterstützung für die automatische Skalierung entstehen Probleme und Überschneidungen beim Öffnen von Formularen auf HDPI-Monitoren, wie in diesem Bild:

Screenshot von Windows Forms Designer auf HDPI-Monitoren, der Probleme aufgrund fehlender Unterstützung für die automatische Skalierung anzeigt.

Wenn Sie ein Formular in Windows Forms Designer auf einem HDPI-Monitor öffnen, zeigt Visual Studio eine Infoleiste an, in der der aktuelle Skalierungsprozentsatz des Monitors angezeigt wird (z. B. 150%/144 DPI), eine Option zum Neustarten von Visual Studio bei 100% Skalierung, um dem Windows Forms Designer zu entsprechen, und weitere Informationen. Durch das Neustarten bei 100% Skalierung wird VS DPI-unbewusst, was eine ordnungsgemäße Darstellung ohne Überlappung ermöglicht.

Screenshot der Informationsleiste in Visual Studio zum Neustart im NICHT-DPI-Modus.

Tipp

  1. Wenn Sie die Informationsleiste geschlossen haben und Visual Studio als DPI-unaware neu starten möchten, verwenden Sie das DevEnv.exe Tool.
  2. Wenn Sie nicht im Designer arbeiten, können Sie die Informationsleiste ignorieren. Sie können Benachrichtigungen auch deaktivieren , damit die Informationsleiste nicht mehr angezeigt wird.

Starten Sie Visual Studio als einen Prozess ohne DPI-Awareness neu.

Die empfohlene Lösung zum Beheben dieser UI-Probleme besteht darin, Visual Studio als DPI-unabhängiger Prozess neu zu starten, was bedeutet, dass es mit einer Skalierung von 100 % (96 DPI) neu gestartet wird.

So wechseln Sie zu DPI-unaware:

  • Wählen Sie die Option "Visual Studio mit 100% Skalierung neu starten" in der gelben Informationsleiste aus, die angezeigt wird, wenn Sie ein Formular in Windows Forms Designer öffnen.

Es ist wichtig, Visual Studio neu zu starten, damit es in seinen Standardzustand als ein DPI-fähiger Prozess zurückkehrt, nachdem Sie die Arbeit im Windows Forms-Designer abgeschlossen haben.

Zurück zu DPI-aware:

  • Schließen Sie Visual Studio und öffnen Sie es erneut, um die DPI-Bewusstheit wiederherzustellen. Alternativ können Sie in der Informationsleiste die Option "Visual Studio neu starten" als DPI-fähige Prozessoption auswählen.

Wenn Visual Studio als DPI-unbewusst ausgeführt wird, werden die Probleme mit dem Layout des Designers behoben. Schriftarten können jedoch verschwommen erscheinen, und Probleme können in anderen Designern wie dem XAML-Designer auftreten. Visual Studio zeigt eine andere Informationsmeldung an, wenn es DPI-unbewusst ist, die besagt: "Visual Studio wird als ein DPI-unbewusster Prozess ausgeführt." WPF- und XAML-Designer werden möglicherweise nicht ordnungsgemäß angezeigt."

Hinweis

  • Wenn Sie die Toolfenster abdocken, nachdem Sie die Option ausgewählt haben, Visual Studio als DPI-unaware Prozess neu zu starten, kann sich die Position der Toolfenster ändern.
  • Das Standardmäßige Visual Basic-Profil öffnet Projekte nicht erneut, wenn Visual Studio als NICHT-DPI-Prozess neu gestartet wird. Greifen Sie stattdessen über>zuletzt verwendete Projekte und Lösungen auf Ihr Projekt zu.

Verwenden von Windows zum Festlegen der Anzeigeskalierung auf 100%

Um das Umschalten der Anzeigeskalierung in Visual Studio zu vermeiden, passen Sie die Skalierung in den Windows-Einstellungen an. In Windows 11 können Sie beispielsweise die Skalierung auf 100% (96 DPI) festlegen.

Geben Sie dazu Anzeigeeinstellungen in das Suchfeld der Taskleiste ein, und wählen Sie dann " Anzeigeeinstellungen ändern" aus. Legen Sie im Fenster "Einstellungen " die Größe von Text, Apps und anderen Elementen auf 100%fest. Beachten Sie, dass die Skalierung von 100% (96 DPI) die Benutzeroberfläche zur praktischen Verwendung zu klein machen kann.

Deaktivieren der Skalierung mithilfe des DevEnv-Befehlszeilentools

Verwenden Sie DevEnv.exe, um Ihre Anzeigeeinstellungen mithilfe von Befehlszeilentools anstelle der Benutzeroberflächentools (Benutzeroberfläche) zu verwalten. Der devenv.exe Befehl verwendet /noscale als Befehlszeilenparameter, um im Skalierungsmodus 100% ausgeführt zu werden. Hier erfahren Sie, wie Sie es verwenden:

  1. Wählen Sie Tools>Befehlszeile>Entwickler-Eingabeaufforderung in der Visual Studio-Menüleiste aus.
  2. Geben Sie devenv /noScaledann ein.

Weitere Optionen

Zusätzlich zu den oben genannten Optionen können Sie auch die folgenden Optionen ausprobieren:

  • Automatische Skalierung in Windows Forms

  • Wählen Sie die Option zum Optimieren des Renderings für Bildschirme mit unterschiedlichen Pixeldichten aus (erfordert einen Neustart)

  • Deaktivieren Sie skalierungsbenachrichtigungen in Visual Studio, z. B. wenn Sie nicht in einem Designer arbeiten. So deaktivieren Sie Benachrichtigungen:

    1. Öffnen Sie den Bereich "Extras>Optionen", und erweitern Sie den Abschnitt "Alle Einstellungen"> desWindows Forms-Designers> "Allgemein".

    2. Deaktivieren Sie unter "Unterstützung hoher DPI-Werte" das Kontrollkästchen für DPI-Skalierungsbenachrichtigungen .

    1. Öffnen Sie das Dialogfeld "Extras>Optionen ", und erweitern Sie den Abschnitt "Windows Forms Designer>General ".

    2. Legen Sie unter "Unterstützung für hohe DPI-Werte" die Option für DPI-Skalierungsbenachrichtigungen auf "False" fest.

Troubleshoot

Wenn der Übergang zur DPI-Sensibilisierung in Visual Studio nicht funktioniert, stellen Sie sicher, dass der dpiAwareness Wert nicht im unterschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe im Registrierungs-Editor vorhanden ist. Löschen Sie den Wert, wenn er vorhanden ist.