Rozwiązywanie problemów z interfejsem HDPI/skalowaniem Projektant windows Forms w programie Visual Studio

Z tego artykułu dowiesz się, jak rozwiązywać problemy z renderowaniem z powodu ograniczeń skalowania Projektant windows Forms na monitorach HDPI, uruchamiając program Visual Studio jako proces nieświadomy dpi. HDPI oznacza wysoką kropkę na cal, a każda kropka reprezentuje piksel urządzenia fizycznego.

Większa gęstość pikseli tworzy ostrzejsze obrazy i prawidłowo wyświetla elementy rozmiarów skalowania. Bez odpowiedniego skalowania elementy interfejsu użytkownika i tekst są zbyt małe, aby efektywnie używać i mogą się nakładać. Aby rozwiązać ten problem, system Windows automatycznie skaluje percentyl interfejsu użytkownika w celu dopasowania do ustawienia DPI. Na przykład ustawienie DPI o wartości 100% reprezentuje 96 DPI, a 125% to 120 DPI. Monitory używane do wysłania z 96 pikseli na cal, które system Windows był używany jako punkt odniesienia dla 100% rysunku mapy bitowej. Jednak zgodnie z zaawansowaną technologią wyświetlania monitory są teraz dostarczane z panelami o rozdzielczości 300 DPI lub wyższej.

Gdy aplikacja deklaruje się jako świadoma dpi, jest to instrukcja określająca, że aplikacja zachowuje się dobrze w wyższych ustawieniach DPI, dzięki czemu system Windows może stosować skalowanie automatyczne. Z drugiej strony aplikacje nieznające dpi są renderowane przy stałej wartości DPI 96 pikseli na cal lub 100%, więc autoskalowanie nie jest stosowane.

Windows Forms Projektant nie jest świadomy dpi

Uwaga

W programie Visual Studio 2022 w wersji 17.8 lub nowszej można uniknąć problemów opisanych w tym artykule. Program Visual Studio 2022 w wersji 17.8 zapewnia obsługę kart nieświadomych dpi w aplikacji obsługującej dpi. Zobacz Ulepszenia dpi programu Visual Studio. Pozwala to zaprojektować formularze systemu Windows dla kontekstów nieświadomych dpi bez konieczności uruchamiania programu Visual Studio w trybie nieświadomym dpi. Aby użyć tego ustawienia w projekcie Windows Forms, ustaw właściwość ForceDesignerDPIUnaware na true wartość w pliku projektu:

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

Domyślnie program Visual Studio to aplikacja z obsługą kropek na cal (DPI), co oznacza automatyczne skalowanie wyświetlania. Jednak Projektant Windows Forms jest aplikacją nieświadomą DPI, więc jest ona wyświetlana jako mapa bitowa o rozdzielczości 96 DPI. Bez obsługi skalowania automatycznego występują problemy i nakładające się podczas otwierania formularzy na monitorach HDPI, na przykład na poniższej ilustracji:

Screenshot of Windows Forms Designer on HDPI monitor that shows issues due to lack of autoscaling support.

Po otwarciu formularza w formularzach systemu Windows Projektant na monitorze HDPI program Visual Studio wyświetla pasek informacyjny wyświetlający bieżący procent skalowania monitora (na przykład 150%/144 DPI), opcję ponownego uruchomienia programu Visual Studio przy 100% skalowaniu w celu dopasowania do Projektant windows Forms i dalszych informacji. Ponowne uruchomienie przy 100% skalowaniu sprawia, że funkcja VS DPI nie jest świadoma, co pozwala na prawidłowe renderowanie bez nakładania się.

Screenshot of the information bar in Visual Studio to restart in DPI-unaware mode.

Napiwek

  1. Jeśli pasek informacji został zamknięty i chcesz ponownie uruchomić program Visual Studio jako nieświadomy dpi, użyj narzędzia DevEnv.exe.
  2. Jeśli nie pracujesz w projektancie, możesz zignorować pasek informacji. Możesz również wyłączyć powiadomienia , aby pasek informacji nie był nadal wyświetlany.

Uruchom ponownie program Visual Studio jako proces nieświadomy dpi

Zalecanym rozwiązaniem do rozwiązania tych problemów z interfejsem użytkownika jest ponowne uruchomienie programu Visual Studio jako procesu nieświadomego dpi, co oznacza, że jest uruchamiane ponownie przy skalowaniu 100% (96 DPI).

Aby przełączyć się na dpi nieświadome:

  • Wybierz opcję "Uruchom ponownie program Visual Studio ze skalowaniem w 100%" na żółtym pasku informacji wyświetlanym po otwarciu formularza w Projektant formularzy systemu Windows.

Ważne jest, aby ponownie uruchomić program Visual Studio, aby przywrócić go domyślnie jako proces obsługujący dpi po zakończeniu pracy w Projektant Windows Forms.

Aby powrócić do rozpoznawania dpi:

  • Zamknij i ponownie otwórz program Visual Studio, aby ponownie powrócić do rozpoznawania dpi. Alternatywnie wybierz opcję Uruchom ponownie program Visual Studio jako proces obsługujący dpi na pasku informacji.

Gdy program Visual Studio działa jako nieznajdające dpi, problemy z układem projektanta są rozwiązywane, jednak czcionki mogą pojawiać się rozmyte, a problemy mogą pojawiać się w innych projektantach, takich jak Projektant XAML. Program Visual Studio wyświetla inny komunikat informacyjny, gdy dpi nie jest świadomy, że program Visual Studio działa jako proces nieświadomy dpi. Projektanci WPF i XAML mogą nie wyświetlać poprawnie."

Uwaga

  • Jeśli okna narzędzi są oddokowane po wybraniu opcji ponownego uruchomienia programu Visual Studio jako procesu nieświadomego dpi, pozycja okien narzędzi może ulec zmianie.
  • Jeśli używasz domyślnego profilu języka Visual Basic lub jeśli podczas tworzenia nowych projektów opcja Zapisz nowe projekty została wybrana w obszarze Narzędzia>Opcje>projektów i rozwiązań, program Visual Studio nie może ponownie otworzyć projektu po ponownym uruchomieniu jako proces nieumyślny DPI. Można jednak otworzyć projekt, wybierając go w obszarze Pliki>ostatnio używane projekty i rozwiązania.

Uwaga

  • Jeśli oddokujesz okna narzędzi po wybraniu opcji ponownego uruchomienia programu Visual Studio jako procesu nieświadomego dpi, pozycja okien narzędzi może ulec zmianie.
  • Domyślny profil języka Visual Basic nie będzie ponownie otwierał projektów po ponownym uruchomieniu programu Visual Studio jako procesu nieumyślnego dpi. Zamiast tego uzyskaj dostęp do projektu za pomocą plików >Ostatnio używanych projektów i rozwiązań.

Użyj systemu Windows, aby ustawić skalowanie wyświetlania na 100%

Aby uniknąć używania programu Visual Studio do przełączania skalowania wyświetlania, dostosuj skalowanie w ustawieniach systemu Windows. Na przykład w systemie Windows 11 można ustawić skalowanie na 100% (96 DPI).

W tym celu wpisz ustawienia wyświetlania w polu wyszukiwania paska zadań, a następnie wybierz pozycję Zmień ustawienia wyświetlania. W oknie Ustawienia ustaw pozycję Zmień rozmiar tekstu, aplikacji i innych elementów na 100%. Należy pamiętać, że skalowanie w 100% (96 DPI) może sprawić, że interfejs użytkownika będzie zbyt mały do użytku praktycznego.

Wyłączanie skalowania przy użyciu narzędzia wiersza polecenia DevEnv

Aby zarządzać ustawieniami wyświetlania przy użyciu narzędzi wiersza polecenia, a nie narzędzi interfejsu użytkownika (interfejs użytkownika), użyj DevEnv.exe. Polecenie devenv.exe przyjmuje /noscale jako parametr wiersza polecenia do uruchomienia w trybie skalowania 100%. Oto jak go używać:

  1. Wybierz pozycję Narzędzia>Wiersz polecenia dla deweloperów wiersza polecenia> na pasku menu programu Visual Studio.
  2. Następnie wprowadź .devenv /noScale

Inne opcje

Oprócz wyżej wymienionych opcji można również wypróbować następujące opcje:

Rozwiązywanie problemów

Jeśli przejście rozpoznawania dpi nie działa w programie Visual Studio, upewnij się, że dpiAwareness wartość nie jest obecna w HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Opcje wykonywania pliku obrazu\devenv.exe podklucza w Edytorze rejestru. Usuń wartość, jeśli jest obecna.