Windows 8.1 DPI por monitor: em quais situações interpola?

2

Estou curioso sobre o novo recurso "DPI por monitor" do Windows 8.1.

Minha pergunta diz respeito aos aplicativos legados que oferecem suporte a uma configuração de DPI global, mas que ainda não são "por ciente de DPI de monitor". Esses aplicativos podem se renderizar em qualquer DPI, portanto devem sempre renderizar na resolução da tela ao usar apenas um monitor.

Mas com vários monitores em diferentes configurações de DPI, às vezes, o Windows precisa escaloná-los por meio da simples interpolação de imagem. Em quais situações essa interpolação acontece?

Encontrei informações conflitantes:

  1. O desenvolvedor do VirtualDub [1] escreve que existe uma configuração "Global DPI". Todos os aplicativos herdados são renderizados com essa resolução e, em seguida, apenas interpolados para o respectivo tamanho de monitor. Isso significa que, em um monitor, os aplicativos herdados são sempre interpolados e desfocados.
  2. AnandTech [2] escreve que esses aplicativos são "dimensionados inicialmente na configuração de DPI de qualquer monitor em que estejam abertos". Somente se você movê-los para um monitor diferente, eles serão interpolados. O que parece ser uma solução muito melhor - se você abrir programas em uma tela e deixá-los lá, eles sempre devem renderizar na resolução nativa.

Quem está certo?

[1]: link em "A configuração global de DPI"

[2]: link segundo parágrafo

    
por LTR 11.02.2015 / 12:55

2 respostas

2

My question concerns legacy applications that do support a global DPI setting, but are not yet "per monitor DPI aware". These applications can render themselves at any DPI, so they should always render at the display resolution when using just one monitor.

System–DPI Aware Applications não são renderizados em nenhum DPI - os aplicativos são renderizados em system DPI e - se um monitor DPI for diferente de system DPI - são virtualizados para monitor DPI . Portanto, mesmo quando você tiver um monitor e esse monitor tiver DPI diferente de system DPI System–DPI Aware Application será dimensionado.

But with multiple monitors at different DPI settings, sometimes Windows has to scale them by simple image interpolation. In which situations does that interpolation happen?

Virtualização e renderização para:

  • Not DPI–aware Applications : processado em 96 DPI , virtualizado em qualquer monitor com DPI diferente de 96 DPI .
  • System–DPI Aware Applications : processado em system DPI , virtualizado em qualquer monitor com DPI diferente de system DPI .
  • Per Monitor–DPI Aware Applications : processado em monitor DPI (mensagem WM_DPICHANGED), não é virtualizado.

I found conflicting information:

The developer of VirtualDub writes that there is a "Global DPI" setting. All legacy applications are rendered at this resolution and then just interpolated to the respective monitor size. This would mean that on one monitor, legacy applications are always interpolated and blurry.

AnandTech writes that these applications are "initially scaled at the DPI setting of whichever monitor they are opened on". Only if you move them to a different monitor do they get interpolated. Which seems like a much better solution - if you open programs on one screen and leave them there, they should always render at the native resolution.

Who is right?

Se eu entendi corretamente:

  • Desenvolvedor do VirtualDub significa System–DPI Aware Applications

enquanto

  • AnandTech significa Per Monitor–DPI Aware Applications

então ambos estão certos.

Existem - completamente corretas - Microsoft informações que - eu acho - foram uma fonte do artigo da AnandTech.

    
por 12.12.2015 / 18:49
2

Isso é documentado pela Microsoft em este artigo do TechNet

Screenshotted, porque tabelas.

    
por 13.12.2015 / 05:32