Como forçar o escalonamento de dpi alto?

26

Como posso forçar um aplicativo a ser escalado em alta resolução?

  • Finja que existe um aplicativo, cujos desenvolvedores o manifestaram com alta percepção de dpi, quando na verdade não é. Como posso forçar o dimensionamento de dpi?

  • Imagine que há um aplicativo em que a Microsoft aplicou o shim de compatibilidade " HighDpiAware ", quando o aplicativo realmente não está. Como posso forçar o dimensionamento de dpi?

Como posso forçar o Windows a aplicar o escalonamento de dpi a um aplicativo?

Editar: o que é escalonamento de alta resolução?

Nem todos os usuários executam o Windows a 96 dpi. Nem todo botão deve ter 75x23 pixels, nem toda barra de ferramentas tem 25 pixels de altura, e nem todo glifo treeview é 16x16. Se o usuário tiver escolhido uma configuração de dpi diferente para o Windows, será necessário dimensionar tudo adequadamente.

O problema é que quase nenhum desenvolvedor faz seu trabalho manipulando bem as configurações de alta resolução. Na melhor das hipóteses, tudo vai ficar "do mesmo tamanho", o que significa que tudo parece pequenino . Na pior das hipóteses, os formulários são colocados incorretamente, com o texto sendo cortado e os controles não visíveis.

Começando com o Windows Vista, e aproveitando o poder da Composição da Área de Trabalho, a Microsoft desistiu de desenvolvedores fazendo seu trabalho e agora estão no aplicativo. Eles dizem aos apps que o usuário está executando a 96 dpi. O Windows, em seguida, usa a placa de vídeo e a composição da área de trabalho para ampliar os formulários.

Pro: o conteúdo do formulário terá um bom tamanho legível.
Con: tudo ficará um pouco confuso.

Esse recurso de "escalonamento de alta intensidade de dpi" só funciona a critério do usuário e exige:

  • Windows Vista ou mais recente
  • Composição da área de trabalho a ser ativada
  • o usuário deve desativar "Usar o escalonamento no estilo do Windows XP"
  • o usuário não desabilitar o dimensionamento do seu aplicativo

Como desenvolvedor, você pode optar pelo escalonamento de alta intensidade de dpi. Se você se esforçou para escrever o seu aplicativo corretamente, e você sabe que você vai lidar com alta dpi corretamente. Você desativa esse escalonamento adicionando uma entrada de manifesto ao seu executável, declarando que está " com alta densidade de dpi ".

O tópico como faz com que seu aplicativo respeite as preferências do usuário (incluindo a face da fonte, o tamanho da fonte e a configuração de dpi) é uma pergunta para stack overflow . Como é a sintaxe para a entrada do manifesto declarando sua " alta percepção de dpi ".

Esta pergunta, no superusuário , é como ignorar um desenvolvedor que foi em frente e adicionou uma entrada de manifesto ciente de alta dpi , quando na verdade o aplicativo não é alto-dpi ciente. Eles disseram ao Windows para desabilitar o dimensionamento, mas eles não testaram o aplicativo. Existe software disponível com uma entrada de manifesto "high-dpi aware", e agora o aplicativo não pode ser usado em "fontes grandes" (por exemplo, 120dpi).

    
por Ian Boyd 04.04.2010 / 02:47

4 respostas

4

Hmm. Minha sugestão seria editar o manifesto e remover a declaração incorreta. E não se esqueça de incomodar o desenvolvedor sobre isso, mas você pode!

Editar: observe que deve ser possível simplesmente colocar o manifesto ao lado do executável, por exemplo, para foo.exe , você colocaria o manifesto em foo.exe.manifest . Consulte o artigo do MSDN (veja em "Sintaxe do nome do arquivo") .

    
por 04.06.2010 / 21:55
8

Acabei de lançar uma DLL que conecta e redireciona as chamadas para o SetProcessDPIAware. Para os aplicativos que desativam o dimensionamento de DPI por meio de código, essa é uma correção rápida e fácil (em comparação com o patch binário).

DPIMangler: postagem no blog , código-fonte .

    
por 12.05.2014 / 20:14
6

Você ainda pode editar o manifesto, basta editá-lo no próprio arquivo .EXE. Procure por um editor de recursos que tenha suporte a manifesto. Um exemplo com suporte rudimentar é o XN Resource Editor.) Basta localizar e excluir a linha que menciona o HIGHDPIAWARE e salvar o executável.

Certifique-se de fazer uma cópia do executável antes de editá-lo!

    
por 27.09.2012 / 21:32
0

Gostaria de saber se o ResizeEnable é o que você está procurando?

link

    
por 03.06.2010 / 09:17