На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



Ваше мнение о модераторах: user posted imageBarazuk, user posted imageOpenGL, user posted imageMikle
Модераторы: OpenGL, Mikle
  
> Разрешение окна в Win10 не соответствует действительности , D2D приложение
    Собственно код:
    ExpandedWrap disabled
      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 ?
      Цитата simsergey @
      Я что-то не правильно понимаю, или это баг в 10 ?

      Это баг Windows качует из версии в версию видимо для совместимости. Возможно для совместимости с принтерами.
      Сообщение отредактировано: Pavia -
        В принципе, как пишется на msdn, DIPs пересчитываются в DPI.
        Контексту D2D устанавливается настоящий DPI.
        Я наблюдаю, как происходит масштабирование геометрии, буд-то ее перевели в растр, уменьшили на разницу разрешений DIPs и DPI, а потом растянули назад...
        Или наоборот, нарисовали геометрию на рельном DPI, потом засунули в окно, растянули, и сузили окно по реальным размерам.:scratch:
        Сообщение отредактировано: simsergey -
          И так, действительно, данная проблема была замечена и другими разработчиками.

          Обновил студию на Win10, создал в ней:
          1. универсальное приложение для Win8.1 с DirectX и XAML, доработали шаблон, теперь он пополнился обработчиком события CompositionScaleChanged event у компонента swapchainpanel.
          2. универсальное приложение для Win10 с DirectX и XAML.

          ОС Windowsm_dpi (8.1)CompositionScale (8.1)m_dpi (10)CompositionScale (10)
          Приложение Win8.196.01.079.680.83
          Приложение Win10--96.01.0

          Получается действительно, система Windows 10 зачем-то скалит приложения Win8.1.
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0248 ]   [ 16 queries used ]   [ Generated: 18.04.24, 10:56 GMT ]