Delen via


HDPI-/schaalproblemen met de Windows Forms Designer in Visual Studio oplossen

In dit artikel leert u hoe u renderingproblemen kunt oplossen vanwege schaalbeperkingen van windows Forms Designer op HDPI-monitors door Visual Studio uit te voeren als een DPI-onbekend proces. HDPI staat voor hoge stippen per inch, waarbij elke punt een fysieke apparaat pixel vertegenwoordigt.

Hogere pixeldichtheid creëert scherpere afbeeldingen en geeft schaalgrootte-elementen correct weer. Zonder de juiste schaalaanpassing zijn elementen en tekst van de gebruikersinterface (UI) te klein om effectief te gebruiken en kunnen ze overlappen. Om dit probleem op te lossen, wordt het percentiel van de gebruikersinterface automatisch aangepast aan de DPI-instelling. Een DPI-instelling van 100% vertegenwoordigt bijvoorbeeld 96 DPI en 125% is 120 DPI. Monitoren hadden vroeger 96 pixels per inch, wat door Windows werd gebruikt als basis voor 100% bitmapweergave. Als displaytechnologie echter geavanceerd is, worden monitors nu geleverd met panelen van 300 DPI of hoger.

Wanneer een toepassing zichzelf als DPI-bewust verklaart, is het een instructie die aangeeft dat de app zich goed gedraagt bij hogere DPI-instellingen, zodat Windows automatisch schalen kan toepassen. Omgekeerd worden toepassingen die niet DPI-bewust zijn weergegeven met een vaste DPI-waarde van 96 pixels per inch of 100%, waardoor automatisch schalen niet wordt toegepast.

Windows Forms Designer is DPI-niet bekend

Opmerking

In Visual Studio 2022 versie 17.8 of hoger kunt u de problemen voorkomen die in dit artikel worden beschreven. Visual Studio 2022 versie 17.8 biedt ondersteuning voor DPI-niet-bewuste tabbladen binnen een DPI-compatibele toepassing. Zie Dpi-verbeteringen in Visual Studio. Hiermee kunt u Windows Forms ontwerpen voor contexten die niet bewust zijn van DPI, zonder dat u Visual Studio hoeft uit te voeren in de dpi-niet-bewustmodus. Als u deze instelling wilt gebruiken in een Windows Forms-project, stelt u de eigenschap ForceDesignerDPIUnawaretrue in op in het projectbestand.

De ForceDesignerDpiUnaware projecteigenschap wordt alleen ondersteund voor Windows Forms-projecten die gericht zijn op .NET 6 of hoger. Projecten die gericht zijn op .NET Framework (inclusief .NET Framework 4.8) gebruiken deze instelling niet; de ontwerpfunctie blijft worden uitgevoerd met het standaard DPI-gedrag.

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

Visual Studio is standaard een dpi-compatibele toepassing (dots per inch), wat betekent dat de weergave automatisch wordt geschaald. Windows Forms Designer is echter een DPI-niet-bewust app, dus deze wordt weergegeven als een bitmap met 96 DPI. Zonder ondersteuning voor automatisch schalen ontstaan problemen en overlappingen bij het openen van formulieren op HDPI-beeldschermen, zoals in deze afbeelding:

Schermopname van Windows Forms Designer op HDPI-monitor met problemen vanwege een gebrek aan ondersteuning voor automatisch schalen.

Wanneer u een formulier opent in Windows Forms Designer op een HDPI-monitor, wordt in Visual Studio een infobalk weergegeven met het huidige schaalpercentage van de monitor (bijvoorbeeld 150%/144 DPI), een optie om Visual Studio opnieuw te starten op 100% schalen zodat deze overeenkomt met Windows Forms Designer en meer informatie. Als u opnieuw opstart met 100% schaal, wordt Visual Studio DPI-onafhankelijk, waardoor de weergave correct is zonder overlapping.

Schermopname van de informatiebalk in Visual Studio om opnieuw op te starten in de DPI-ongevoelige modus.

Aanbeveling

  1. Als u de informatiebalk hebt gesloten en Visual Studio opnieuw wilt opstarten als niet-DPI-bewust, gebruik het hulpprogramma DevEnv.exe.
  2. Als u niet in de ontwerpfunctie werkt, kunt u de informatiebalk negeren. U kunt ook meldingen uitschakelen , zodat de informatiebalk niet meer wordt weergegeven.

Visual Studio opnieuw starten als een DPI-ongevoelig proces

De aanbevolen oplossing om deze problemen met de gebruikersinterface op te lossen, is om Visual Studio opnieuw te starten als een DPI-onbekend proces, wat betekent dat het opnieuw wordt opgestart bij 100% schalen (96 DPI).

Overschakelen naar DPI-ongevoelig:

  • Selecteer de optie Visual Studio opnieuw opstarten met 100% schalen op de gele informatiebalk die wordt weergegeven wanneer u een formulier opent in Windows Forms Designer.

Het is belangrijk om Visual Studio opnieuw te starten om deze terug te keren naar de standaardinstelling als dpi-bewust proces wanneer u klaar bent met werken in Windows Forms Designer.

Keer terug naar DPI-bewustheid:

  • Sluit en heropen Visual Studio om terug te keren naar een DPI-gevoelige toestand. U kunt ook de optie Visual Studio opnieuw opstarten als een DPI-bewust proces in de informatiebalk selecteren.

Wanneer Visual Studio wordt uitgevoerd als DPI-onaangepast, worden de problemen met de ontwerplay-out opgelost, maar kunnen lettertypen wazig lijken en kunnen er problemen optreden in andere ontwerpers, zoals de XAML Designer. Visual Studio geeft een ander informatief bericht weer wanneer het DPI-onbewust is dat 'Visual Studio wordt uitgevoerd als een DPI-onbewust proces. WPF- en XAML-ontwerpers worden mogelijk niet correct weergegeven."

Opmerking

  • Als u toolvensters loskoppelt nadat u de optie hebt geselecteerd om Visual Studio opnieuw op te starten als dpi-onbekend proces, kan de positie van de vensters van het hulpprogramma veranderen.
  • Het standaard Visual Basic-profiel opent projecten niet opnieuw wanneer Visual Studio opnieuw wordt opgestart als een DPI-niet-bewust proces. Open in plaats daarvan uw project via Bestand>Recente projecten en oplossingen.

Windows gebruiken om de schaal van uw beeldscherm in te stellen op 100%

Als u wilt voorkomen dat Visual Studio wordt gebruikt om het schalen van beeldschermen in of uit te schakelen, past u de schaal aan in Windows-instellingen. In Windows 11 kunt u bijvoorbeeld schalen instellen op 100% (96 DPI).

Hiervoor typt u weergave-instellingen in het zoekvak van de taakbalk en selecteert u Weergave-instellingen wijzigen. Stel in het venster Instellingende grootte van tekst, apps en andere items in op 100%. Houd er rekening mee dat 100% schalen (96 DPI) de gebruikersinterface te klein kan maken voor praktisch gebruik.

Schalen uitschakelen met behulp van het commandoregelprogramma DevEnv

Als u uw weergave-instellingen wilt beheren met opdrachtregelprogramma's in plaats van de hulpprogramma's voor de gebruikersinterface (gebruikersinterface), gebruikt u DevEnv.exe. Het devenv.exe-commando gebruikt /noscale als een opdrachtregelparameter om in 100% schaalmodus te draaien. U kunt het als volgt gebruiken:

  1. Selecteer Hulpmiddelen>Opdrachtregel>Ontwikkelaar Opdrachtprompt in de menubalk van Visual Studio.
  2. Voer vervolgens in devenv /noScale.

Andere opties

Naast de bovengenoemde opties kunt u ook de volgende opties proberen:

Troubleshoot

Als de overgang van DPI-bewustzijn niet werkt in Visual Studio, controleert u of de dpiAwareness waarde NIET aanwezig is in de subsleutel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe in de Registereditor. Verwijder de waarde als deze aanwezig is.