Здравствуйте.
Делаю програмку на wpf. Места на форме достаточно мало а кнопки задумано сделать крупными. Вроде все составил все ок. Приходит сообщ от заказчика что половина программы не видно. Я в непонятках лезу на его комп и обнаруживаю что на винде 10 автоматом выставляется масштаб элементов в 125%.
В итоге куча всего оказалась за границами экрана.
Так вот вопрос. Можно ли каким либо способом отказаться внутри приложения от изменения масштаба?? Так то у меня семерка а тут по умолчанию 100% и все под этот масштаб настроено.
Скрин софта показать запрещено. Поэтому только на словах можно описывать. ))
ОС тут не причем, везде 125% (и выше) можно выставить, разве что качество масштабирования может отличаться. Разве что может быть для некоторых HiDPI экранов может само выставить.
Но тогда ж заказчику плохо видно будет, а на каком-нибудь 4K лаптопе вообще ничего не разглядит ) (там 150-200% обычно, а то и выше если экран совсем маленький)
В WPF по идее должно работать без особых проблем (по крайней мере если не ограничивать жестко размеры всего, использовать Layout’ы), это во всяких Дельфи 7 куча сложностей.
Разрабатывать с учетом масштабирования.
В современных фреймворках типа WPF обычно нет особых проблем с этим, только если делать что-то сильно нестандартное или задавать размеры/позиции в пикселях вместо использования Layout’ов и т.п. (и то там вроде бы в основном по умолчанию Device-Independent Units, а не пиксели). Разве что размеры иконок надо учитывать, чтоб не были размытыми при масштабировании.
В XAML тоже поменять надо.
Но это вроде бы не нужно если не надо поддерживать еще и случаи когда разные мониторы с разным масштабированием на одном устройстве.
This page covers legacy WPF development for Windows 8.1. If you are developing WPF applications for Windows 10, please see the latest documentation on GitHub.
Но как я говорю
Вот обычное WPF + .NET 4.0 приложение, нормально масштабируется с 175%. Даже не использовал нормально Grid и т.п., а тупо мышкой расставил.
Так вот именно что без гридов.
А у меня тут гридов полно. Они и начинают плясать.
Если выставлять размеры строк как auto то все нормально но при больших компонентах части кнопок пропадают. Если выставить по частям типа 1* то вроде нормально но он все пустое место заполняет и вытягивает компоненты по всей ширине.
По идее надо чтобы пока места много и все элементы умещаются то использовалось auto а если элементы перестают вмещаться то применялось 1*
Ну я о том, что “Per monitor DPI awareness” не эту проблему решает )
Так а зачем пустое место оставлять?
А про вытягиваемость самого содержимого это наверно надо в компоненте настраивать/ограничивать если это свой сложный компонент.
Уходит за границы в ширину или по высоте? По высоте в приложение можно в общий контейнер скроллинг добавить.
Не понятно что есть - висят в воздухе.
По скринам: слева все как-бы хорошо, справа избыток свободного места в контейнере с элементами(компонентами). Так это должно настраиваться в свойствах контейнера и самих элементов(компонентов). Имею ввиду масштабирование и скроллинг при необходимости.
P. S.
Здесь скорей всего нужно смотреть в строну выравнивания компонента в контейнере корректировкой свойств компонента.
Да уже исковырял все что нашел. Если стэкпанель то там всегда масштабирование авто стоит. Если таблица то только так как на экране … Сам не нашел нужную пропертю. ))) Если кто знает прошу ткнуть пальцем.
Так а если копонентам, после размещения их всех в контейнере, задать свойсво - занять все пространство? Друг в друга будут упираться занимая все пространство в контейнере.
Это работает если сделать значения строк как auto а один любой как 1* тогда этот один расширяеься до любых размеров. Но авто размер это значит по размеру контента. А в таком случае они обрезаются если форма станет меньше.