Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.160.154] |
|
Сообщ.
#1
,
|
|
|
Собственно код:
void DX::DeviceResources::SetWindow(CoreWindow^ window) { // Вызывается всегда, когда создается или пересоздается основное окно DisplayInformation^ currentDisplayInformation = DisplayInformation::GetForCurrentView(); m_logicalSize = Windows::Foundation::Size(window->Bounds.Width, window->Bounds.Height); m_dpi = currentDisplayInformation->LogicalDpi; } Смотрю отладчиком, в окно передаются не настоящие значения, а метод Windows::Graphics::Display::DisplayInformation::GetForCurrentView() возвращает не настоящее значение DPI. При системном масштабировании 100%: DPI 79.6800003, m_logicalSize 1542.16870 x 877.108459 При системном масштабировании 125%: DPI 68.1600037, m_logicalSize 1802.81689 x 1000.00000 Настоящие значения: DPI 96.0, m_logicalSize 1280.0000 x 8000.00000 Как результат - размытая геометрия. При работе приложения на Windows 8.1 программа получает настоящие значения, а при работе на Windows 10 такие значения. Я что-то не правильно понимаю, или это баг в 10 ? |
Сообщ.
#2
,
|
|
|
Цитата simsergey @ Я что-то не правильно понимаю, или это баг в 10 ? Это баг Windows качует из версии в версию видимо для совместимости. Возможно для совместимости с принтерами. |
Сообщ.
#3
,
|
|
|
В принципе, как пишется на msdn, DIPs пересчитываются в DPI.
Контексту D2D устанавливается настоящий DPI. Я наблюдаю, как происходит масштабирование геометрии, буд-то ее перевели в растр, уменьшили на разницу разрешений DIPs и DPI, а потом растянули назад... Или наоборот, нарисовали геометрию на рельном DPI, потом засунули в окно, растянули, и сузили окно по реальным размерам. |
Сообщ.
#4
,
|
||||||||||||||||
|
И так, действительно, данная проблема была замечена и другими разработчиками.
Обновил студию на Win10, создал в ней: 1. универсальное приложение для Win8.1 с DirectX и XAML, доработали шаблон, теперь он пополнился обработчиком события CompositionScaleChanged event у компонента swapchainpanel. 2. универсальное приложение для Win10 с DirectX и XAML.
Получается действительно, система Windows 10 зачем-то скалит приложения Win8.1. |