Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Neste artigo, você aprenderá a resolver problemas de renderização devido a limitações de dimensionamento do Windows Forms Designer 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 do dispositivo físico.
Maior densidade de pixels cria imagens mais nítidas e exibe elementos de tamanhos de escala corretamente. Sem o dimensionamento adequado, os elementos da interface do usuário (UI) e o texto são muito pequenos para serem usados de forma eficaz e podem se sobrepor. Para ajudar a resolver 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. Os monitores costumavam ser fornecidos com 96 pixels por polegada, que o Windows usava como linha de base para desenho de bitmap de 100%. No entanto, com o avanço da tecnologia de exibição, os monitores agora são fornecidos com painéis de 300 DPI ou superiores.
Quando um aplicativo se declara ciente de DPI, é uma instrução especificando 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, os aplicativos sem reconhecimento de DPI são renderizados a um valor de DPI fixo de 96 pixels por polegada, ou 100%, e, portanto, o dimensionamento automático não é aplicado.
O Windows Forms Designer não reconhece 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 reconhecimento de DPI em um aplicativo com reconhecimento de DPI. Consulte Melhorias de DPI do Visual Studio. Isso permite que você projete Windows Forms para contextos sem reconhecimento de DPI, sem exigir que você execute o Visual Studio no modo sem reconhecimento de DPI. Para usar esta definição num projeto Windows Forms, defina a propriedade ForceDesignerDPIUnaware como true no ficheiro do seu projeto.
A ForceDesignerDpiUnaware propriedade do projeto é suportada apenas para projetos Windows Forms que têm como alvo .NET 6 ou versões posteriores. Projetos direcionados ao .NET Framework (incluindo o .NET Framework 4.8) não utilizam esta configuração; o designer continuará a correr com o comportamento DPI padrão.
<PropertyGroup>
...
<ForceDesignerDPIUnaware>true</ForceDesignerDPIUnaware>
</PropertyGroup>
Por padrão, o Visual Studio é um aplicativo com reconhecimento de pontos por polegada (DPI), o que significa que a exibição é dimensionada automaticamente. No entanto, o Windows Forms Designer é um aplicativo sem reconhecimento de DPI, portanto, ele aparece como um bitmap em 96 DPI. Sem suporte de dimensionamento automático, surgem problemas e sobreposições ao abrir formulários em monitores HDPI, como nesta imagem:
Quando você abre um formulário no Windows Forms Designer em um monitor HDPI, o Visual Studio exibe uma barra de informações que exibe a porcentagem de dimensionamento atual do monitor (por exemplo, 150%/144 DPI), uma opção para reiniciar o Visual Studio em 100% dimensionamento para corresponder ao Windows Forms Designer e mais informações. A reinicialização com uma escala de 100% torna o VS não compatível com DPI, permitindo uma renderização adequada sem sobreposição de elementos.
Sugestão
- Se você fechou a barra de informações e deseja reiniciar o Visual Studio como DPI-unaware, use a ferramenta DevEnv.exe.
- Se você não estiver trabalhando no designer, poderá ignorar a barra de informações. Também pode desativar as notificações para que a barra de informações não continue a aparecer.
Reinicie o Visual Studio como um processo insensível a DPI
A solução recomendada para resolver esses problemas de interface do usuário é reiniciar o Visual Studio como um processo sem reconhecimento de DPI, o que significa que ele é reiniciado em 100% de dimensionamento (96 DPI).
Para mudar para um modo sem suporte a DPI:
- Selecione a opção "Reiniciar o Visual Studio com escala de 100%" na barra de informações amarela que aparece quando você abre um formulário no Windows Forms Designer.
É importante reiniciar o Visual Studio para devolvê-lo ao seu padrão como um processo com reconhecimento de DPI quando terminar de trabalhar no Windows Forms Designer.
Para voltar ao DPI-aware:
- Feche e reabra o Visual Studio para retornar ao reconhecimento de DPI novamente. Como alternativa, selecione a opção Reiniciar o Visual Studio como um processo com reconhecimento de DPI na barra de informações.
Quando o Visual Studio é executado como DPI-unaware, 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á a ser executado como um processo não ciente de DPI, que diz "O Visual Studio está a ser executado como um processo não ciente de DPI." Os designers WPF e XAML podem não ser exibidos corretamente."
Observação
- Se você desencaixar janelas de ferramentas depois de selecionar a opção para reiniciar o Visual Studio como um processo sem reconhecimento de DPI, a posição das janelas de ferramenta 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 File>Recent Projects and Solutions.
Use o Windows para definir o dimensionamento de tela para 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 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 o dimensionamento 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 suas 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 usa /noscale como parâmetro de linha de comando para ser executado no modo de dimensionamento de 100%. Veja como usá-lo:
- Selecione Tools>Command Line>Developer Command Prompt na barra de menus do Visual Studio.
- Em seguida, digite
devenv /noScale.
Outras opções
Além das opções acima mencionadas, você também pode tentar as seguintes opções:
Selecione a opção Otimizar a renderização para telas com diferentes densidades de pixels (requer reinicialização)
Desative as notificações de dimensionamento no Visual Studio, por exemplo, se você não estiver trabalhando em um designer. Veja como desativar as notificações:
Abra o painelOpções de > e expanda a seção Todas as Configurações>do Windows Forms Designer>Geral.
Em Suporte a DPI alto, desmarque a caixa de seleção Notificações de escala de DPI.
Abra a caixade diálogo Opções de > e expanda a seçãoGeral do >.
Em Suporte a DPI alto, defina a opção de notificações de dimensionamento de DPI como False.
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.