Решил наконец-то окончательно победить неправильное отображение форм, при использовании масштабирования в системе.
Сейчас все больше мониторов с высоким разрешением, поэтому обращений по этому поводу поступают все чаще и чаще.
Проблема в том, что для WinForms масштабирование в Windows настоящий ад. На разных системах и разных версиях .NET все реализовано по своему. А если еще у вас несколько разных мониторов...
Даже в пределах Windows 10 масштабирование может вести себя по разному, в зависимости от установленного обновления Creators Update и .NET 4.7.2
По тестам, лучше всего программа отображалась на Windows 11, но зная неповоротливость энтерпрайза, рассчитывать на это пока не стоит.
Еще из бонусов. Смену масштаба при переносе с монитора на монитор можно отследить только в последних версиях .NET и ОС.
В общем решил писать свою реализацию.
Разрабатывать формы нужно обязательно на 100% DPI, а тестировать уже при другом. При чем нужно перелогиниваться, что бы было все корректно. Либо проверять на другой машине.
Замерил размер шрифта 8.25 на своей системе, с масштабированием 100%. Затем в программе, при создании формы, добавил вычисление строки с таким шрифтом на текущей форме и поделив эти значения получил точный коэффициент. Далее корректирую размеры элементов формы.
Проверил на разных системах, с разным масштабированием. Работает как часы. 😉
Post #66
305

- 🔥 4
- 👏 3