Compartilhar via


Corrigir problemas de HDPI/dimensionamento com o Designer de Formulários do Windows no Visual Studio

Neste artigo, você aprenderá a resolver problemas de renderização devido a limitações de dimensionamento do Designer de Formulários do Windows em monitores HDPI executando o Visual Studio como um processo sem reconhecimento de DPI. HDPI significa pontos altos por polegada, com cada ponto representando um pixel de dispositivo físico.

A densidade de pixels mais alta cria imagens mais nítidas e exibe os elementos de dimensionamento corretamente. Sem o dimensionamento adequado, os elementos e o texto da interface do usuário são muito pequenos para serem usados com eficiência e podem se sobrepor. Para ajudar a corrigir esse problema, o Windows dimensiona automaticamente o percentil da interface do usuário para corresponder à configuração de DPI. Por exemplo, uma configuração de DPI de 100% representa 96 DPI e 125% é 120 DPI. Monitores costumavam ser enviados com 96 pixels por polegada, que o Windows usava como referência para renderização de bitmaps em 100% do tamanho. No entanto, à medida que a tecnologia de exibição avança, os monitores agora são enviados com painéis de 300 DPI ou superiores.

Quando um aplicativo se declara com reconhecimento de DPI, é uma instrução que especifica que o aplicativo se comporta bem em configurações de DPI mais altas e, portanto, o Windows pode aplicar o dimensionamento automático. Por outro lado, aplicativos sem conhecimento de DPI são renderizados com um valor de DPI fixo de 96 pixels por polegada ou 100%e, portanto, o dimensionamento automático não é aplicado.

O Designer de Formulários do Windows não tem conhecimento do DPI

Observação

No Visual Studio 2022 versão 17.8 ou posterior, você pode evitar os problemas descritos neste artigo. O Visual Studio 2022 versão 17.8 fornece suporte para guias sem DPI em um aplicativo com reconhecimento de DPI. Confira as melhorias de DPI do Visual Studio. Isso permite que você projete o Windows Forms para contextos sem conhecimento de DPI, sem exigir que você execute o Visual Studio no modo sem reconhecimento de DPI. Para usar essa configuração em um projeto do Windows Forms, defina a propriedade ForceDesignerDPIUnawaretrue no arquivo de projeto:

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

Por padrão, o Visual Studio é um aplicativo com reconhecimento de DPI (pontos por polegada), o que significa que a exibição é dimensionada automaticamente. No entanto, o Designer de Formulários do Windows é um aplicativo sem conhecimento de DPI, portanto, ele aparece como um bitmap em 96 DPI. Sem o suporte de dimensionamento automático, surgem problemas e sobreposição ao abrir formulários em monitores HDPI, como nesta imagem:

Captura de tela do Designer de Formulários do Windows no monitor HDPI que mostra problemas devido à falta de suporte ao dimensionamento automático.

Quando você abre um formulário no Designer de Formulários do Windows em um monitor HDPI, o Visual Studio exibe uma barra de informações que exibe o percentual de dimensionamento atual do monitor (por exemplo, 150%/144 DPI), uma opção para reiniciar o Visual Studio em 100% dimensionamento para corresponder ao Designer de Formulários do Windows e mais informações. Reiniciar com escalonamento em 100% torna o VS não ciente do DPI, permitindo uma renderização adequada sem sobreposição.

Captura de tela da barra de informações no Visual Studio para reiniciar no modo sem conhecimento de DPI.

Dica

  1. Se você fechou a barra de informações e deseja reiniciar o Visual Studio como sem conhecimento do DPI, use a ferramenta DevEnv.exe.
  2. Se você não estiver trabalhando no designer, poderá ignorar a barra de informações. Você também pode desabilitar as notificações para que a barra de informações não continue a aparecer.

Reiniciar o Visual Studio como um processo indiferente a DPI

A solução recomendada para resolver esses problemas de interface do usuário é reiniciar o Visual Studio como um processo não sensível a DPI, o que significa que ele é reiniciado em escalonamento de 100% (96 DPI).

Para mudar para DPI sem saber:

  • Selecione a opção "Reiniciar o Visual Studio com 100% dimensionamento" na barra de informações amarela que aparece quando você abre um formulário no Designer de Formulários do Windows.

É importante reiniciar o Visual Studio para devolvê-lo ao seu padrão como um processo com reconhecimento de DPI quando você terminar de trabalhar no Designer de Formulários do Windows.

Para retornar ao reconhecimento de DPI:

  • Feche e reabra o Visual Studio para retornar à compatibilidade com DPI. Como alternativa, selecione a opção Reiniciar o Visual Studio como uma opção de processo com reconhecimento de DPI na barra de informações.

Quando o Visual Studio é executado como sem conhecimento de DPI, os problemas de layout do designer são resolvidos, no entanto, as fontes podem parecer desfocadas e problemas podem aparecer em outros designers, como o Designer XAML. O Visual Studio exibe uma mensagem informativa diferente quando está desativada a sensibilização para DPI que diz "O Visual Studio está em execução como um processo sem sensibilização para DPI. Os designers WPF e XAML podem não ser exibidos corretamente."

Observação

  • Se você desencaixar janelas de ferramentas após selecionar a opção de reiniciar o Visual Studio como um processo que não reconhece DPI, a posição das janelas de ferramentas pode mudar.
  • O perfil padrão do Visual Basic não reabre projetos quando o Visual Studio é reiniciado como um processo sem reconhecimento de DPI. Em vez disso, acesse seu projeto por meio de Arquivo>Projetos e Soluções Recentes.

Use o Windows para definir o dimensionamento de exibição como 100%

Para evitar usar o Visual Studio para alternar o dimensionamento de exibição, ajuste o dimensionamento nas configurações do Windows. Por exemplo, no Windows 11, você pode definir o dimensionamento para 100% (96 DPI).

Para fazer isso, digite as configurações de exibição na caixa de pesquisa da barra de tarefas e selecione Alterar configurações de exibição. Na janela Configurações , defina Alterar o tamanho do texto, aplicativos e outros itens para 100%. Lembre-se de que a escala de 100% (96 DPI) pode tornar a interface do usuário muito pequena para uso prático.

Desabilitar o dimensionamento usando a ferramenta de linha de comando DevEnv

Para gerenciar as configurações de exibição usando ferramentas de linha de comando em vez das ferramentas de interface do usuário (interface do usuário), use DevEnv.exe. O devenv.exe comando aceita /noscale como um parâmetro de linha de comando para ser executado no modo de dimensionamento de 100%. Veja como usá-lo:

  1. Selecione Ferramentas>Linha de Comando>Prompt de Comando do Desenvolvedor na barra de menus do Visual Studio.
  2. Em seguida, insira devenv /noScale.

Outras opções

Além das opções mencionadas acima, você também pode experimentar as seguintes opções:

  • Escalonar automaticamente em Windows Forms

  • Selecione a opção para otimizar a renderização para telas com densidades de pixel diferentes (requer reinicialização)

  • Desabilite notificações de dimensionamento no Visual Studio, por exemplo, se você não estiver trabalhando em um designer. Veja como desabilitar as notificações:

    1. Abra o painel Ferramentas>Opções e expanda a seçãode Todas as Configurações>Designer do Windows Forms>Geral.

    2. Em Suporte a DPI Alto, desmarque a caixa de seleção 'Notificações de Dimensionamento de DPI'.

    1. Abra a caixa de diálogoOpções de > e expanda a seçãoGeral do > de Formulários do Windows.

    2. Em Suporte a DPI Alto, defina a opção notificações de escala de DPI como Falso.

Troubleshoot

Se a transição de reconhecimento de DPI não funcionar no Visual Studio, verifique se o dpiAwareness valor NÃO está presente na subchave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe no Editor do Registro. Exclua o valor se ele estiver presente.