none
А ты перешел на UWP? RRS feed

  • Общие обсуждения

  • Вступление: как то в декабре 15го года сел я посмотреть фильм и в очередной раз взбесился, что на моем стареньком  квадратном мониторе я смотрю не столько фильм, сколько полосы сверху и снизу. Да так взбесился, что пошел и купил телевизор с нормальной диагональю. И вот уже совсем скоро телевизор превратился во второй монитор с разрешением 1600х900 и масштабированием 125%. Так решила 10ка и я ей перечить не стал.

    По делу: сижу я значит переписываю приложение WinRT под UWP и попутно смотрю на него в работе, что бы понимать как было реализовано раньше и как нужно реализовать сейчас. Так как код пишу я по прежнему на старом мониторе (а что бы глазки не вывалились) я долго не замечал подвоха. Но тут меня дернуло перенести приложения на экран телевизора, что бы увидеть насколько оно раньше было у мен адаптивным. И о ужас. Все шрифты приложения моментально сжались как детородный орган в зимней купели. Текст такого размера просто не возможно прочесть. Ок. Копирую TxetBlock из WinRT приложения в UWP и запускаю. Хм. Восприятие размера текста что на мониторе, что на телевизоре одинаковое. Все читается без проблем.

    Подозреваю, что молодцы из MS создавая WinRT все же не были готовы к такому будущему, когда телевизоры на пол стены выполняют роли мониторов и чего то там в API начудили. Благо в UWP они исправились и мне теперь еще меньше нужно думать о том на каком устройстве будет запущено приложение. А то что такое будущее наступило это факт, так как в отзывах к приложению было пару замечаний о маленьком размере шрифта, которые я тогда счел не обоснованными, а теперь понимаю, что у людей просто современные мониторы или как у меня телевизоры.

    Так что люди добрые, если у вас есть WinRT приложение, то срочно переносите его на UWP, что бы уже завтра не начать получать гневные отзывы про маленький... шрифт!


    VB.Net - WPF, UWP

    • Изменен тип LXGDARK 22 августа 2016 г. 16:43
    22 августа 2016 г. 14:47

Все ответы

  • Поддержка масштабирования (DPI-aware) было уже в WPF, просто там надо было приложите некие усилия.

    Скорее всего ваше WinRT приложение просто не реализовывало поддержку масштабирования или же она была сделана неверно.

    Для изучения истории вопроса можно почитать тут:

    https://msdn.microsoft.com/en-us/library/windows/desktop/dn469266(v=vs.85).aspx


    This posting is provided "AS IS" with no warranties, and confers no rights.

    22 августа 2016 г. 16:12
    Модератор
  • Скорее всего ваше WinRT приложение просто не реализовывало поддержку масштабирования или же она была сделана неверно.

    Правильно, как вы выразились сделать не сложно. Достаточно просто использовать системные стили для TextBlock. Но что если я хочу просто установить размер шрифта в 16? Без мудрежа с указанием стилей?

    Данной проблемы нет ни в WPF, ни в UWP. В любой из этих платформ строчка:

    <TextBlock FontSize="16" Foreground="Black" Text="Слово" TextWrapping="Wrap"/>
    покажет мне читаемый текст, а вот в WinRT эта же строчка выдаст не читаемый текст. Так кто же все-таки виноват, API или разработчик?

    VB.Net - WPF, UWP

    22 августа 2016 г. 16:27
  • А что такое "размер шрифта в 16"? С каким масштабированием и на каком DPI?

    Даже если предположить что линейный размер выдерживается, это не решает проблемы. Ведь линейный размер не важен, требуется выдерживать угловой размер. То что без проблем читается на мониторе с 30 см не будет видно на ТВ с 3 метров.

    Скорее всего оба. API требовал дополнительных действий, а разработчик их не выполнил.

    Кстати, я бы сказал что WinRT и UWP это просто разные версии одного и того же. 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    22 августа 2016 г. 16:55
    Модератор
  • Вы кажется не поняли о чем этот топик. Он о том, что в WPF и в UWP, API заботится об очевидной вещи - сделать абстрактные 16 одинаковыми на разных форм-факторах. И только WinRT забивает на это болт, предлагая мне использовать стиль для каждого драного TextBlock, даже если мне это не нужно.

    Кстати о WPF я задумался только после вашего сообщения и позапускав все у меня имеющие приложения, увидел, что они выглядят ровно так как задумано. А вот все WinRT'шные выглядят через одно место.

    Ну и наконец предположим, что я плохой разработчик и не предусмотрел такой важной вещи, то как тогда быть с ордами студентов, которых зазывает Microsoft в ряды разработчиков для магазина Windows? Многие из них даже не знают, что такое DPI И зачем это нужно. Хотите сделать платформу более массовой, так сделайте так, что бы она сама заботилась об очевидных вещах. Что собственно они и сделали с приходом UWP.


    VB.Net - WPF, UWP

    22 августа 2016 г. 17:04
  • Так что люди добрые, если у вас есть WinRT приложение, то срочно переносите его на UWP, что бы уже завтра не начать получать гневные отзывы про маленький... шрифт!

    Перенести то не долго, если не добавлять в интерфейс SplitView, RelativePanel и прочие новшества.

    Пришлось провозиться при переезде с Bing Maps на MapControl.

    И пока не разобралась с WebView. Добавляю web страницу через строку с кодом html. Строка без стилей, размеров шрифтов и всего прочего относящегося к размерам (т.е. все размеры на усмотрение системы). Для десктопа получаю нормальный шрифт и адекватный размер картинок, а для мобильной версии шрифт крупный, а картинки мелкие. Теперь надо придумать как сделать размер шрифта и картинок адекватным для любой платформы...

    Так как у меня не было версии для мобилки под WinRT, то мне сложно сказать появилась ли эта проблема или она существовала и раньше, но не все размеры в UWP нормально маштабируются, хотя может это проблема компонента WebView для мобилки...

    22 августа 2016 г. 18:43
  • Вы просто указали что WinRT (AKA Immersive AKA UWP) в десятке получил обновления и теперь может делать определенные вещи из аресенала WPF 10 летней давности. 

    Я же говорю что проблема поддержки разных форм факторов куда сложнее чем "сделать абстрактные 16 одинаковыми на разных форм-факторах". Это давляя мечта, еще с Java, проблема увы пока не решена.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    22 августа 2016 г. 20:02
    Модератор
  • Вы просто указали что WinRT (AKA Immersive AKA UWP) в десятке получил обновления и теперь может делать определенные вещи из аресенала WPF 10 летней давности. 

    Так в этом и суть заголовка топика. Если есть приложение на WinRT, то стоит обновить его до UWP, что бы избежать проблем с размером шрифта. Никакие рассуждений об извечных проблемах и ни какого разбора, что там под капотом. Сухая констатация фактов.

    VB.Net - WPF, UWP

    22 августа 2016 г. 20:14