2

Мне интересно узнать о новой функции "DPI на монитор" в Windows 8.1.

Мой вопрос касается устаревших приложений, которые поддерживают глобальную настройку DPI, но еще не "поддерживают DPI на монитор". Эти приложения могут отображать себя с любым DPI, поэтому они должны всегда отображаться с разрешением экрана при использовании только одного монитора.

Но с несколькими мониторами с разными настройками DPI иногда Windows приходится масштабировать их с помощью простой интерполяции изображений. В каких ситуациях эта интерполяция происходит?

Я нашел противоречивую информацию:

  1. Разработчик VirtualDub [1] пишет, что есть настройка "Global DPI". Все устаревшие приложения отображаются с таким разрешением, а затем просто интерполируются до соответствующего размера монитора. Это будет означать, что на одном мониторе старые приложения всегда интерполируются и размыты.
  2. AnandTech [2] пишет, что эти приложения «изначально масштабируются с настройкой DPI любого монитора, на котором они открыты». Только если вы перенесете их на другой монитор, они будут интерполированы. Что кажется гораздо лучшим решением - если вы открываете программы на одном экране и оставляете их там, они всегда должны отображаться с исходным разрешением.

Кто прав?

[1]: http://www.virtualdub.org/blog/pivot/entry.php?id=384 в разделе "Глобальная настройка DPI".

[2]: http://www.anandtech.com/show/7939/scaling-windows-the-dpi-arms-race/5 второй абзац

2 ответа2

2

Мой вопрос касается устаревших приложений, которые поддерживают глобальную настройку DPI, но еще не "поддерживают DPI на монитор". Эти приложения могут отображать себя с любым DPI, поэтому они должны всегда отображаться с разрешением экрана при использовании только одного монитора.

System–DPI Aware Applications не отображаются с любым DPI - приложения отображаются с system DPI и - если monitor DPI отличается от system DPI - виртуализируются для monitor DPI . Таким образом, даже если у вас есть один монитор, и этот монитор имеет DPI, отличное от system DPI System–DPI Aware Application будет масштабироваться.

Но с несколькими мониторами с разными настройками DPI иногда Windows приходится масштабировать их с помощью простой интерполяции изображений. В каких ситуациях эта интерполяция происходит?

Виртуализация и рендеринг для:

  • Not DPI–aware Applications: визуализируются с 96 DPI , виртуализируются на любом мониторе с DPI, отличным от 96 DPI .
  • System–DPI Aware Applications: визуализируется в system DPI , виртуализируется на любом мониторе с DPI, отличным от system DPI .
  • Приложения для каждого Per Monitor–DPI Aware Applications: отображаются в monitor DPI (сообщение WM_DPICHANGED), не виртуализированы.

Я нашел противоречивую информацию:

Разработчик VirtualDub пишет, что есть настройка "Global DPI". Все устаревшие приложения отображаются с таким разрешением, а затем просто интерполируются до соответствующего размера монитора. Это будет означать, что на одном мониторе старые приложения всегда интерполируются и размыты.

AnandTech пишет, что эти приложения «изначально масштабируются с настройками DPI любого монитора, на котором они открыты». Только если вы перенесете их на другой монитор, они будут интерполированы. Что кажется гораздо лучшим решением - если вы открываете программы на одном экране и оставляете их там, они всегда должны отображаться с исходным разрешением.

Кто прав?

Если я правильно понимаю:

  • Разработчик VirtualDub означает System–DPI Aware Applications

в то время как

  • AnandTech означает Per Monitor–DPI Aware Applications

так что оба правы.

Есть - вполне правильные - сведения Microsoft, которые, я полагаю, были источником статьи AnandTech.

2

Это задокументировано Microsoft в этой статье TechNet.

Скриншот, потому что таблицы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .