Проблемы с высоким разрешением
У меня проблема с отображением нашего приложения Windows.NET в настройках с высоким разрешением.
Для всех форм установлено AutoScaleMode = DPI, но это не решает всех проблем.
В основном, метки в конечном итоге увеличиваются в размере, чтобы справиться с тем, какой шрифт больше, но расположение других элементов управления не меняется, и в результате мы получаем метки, скрывающие другие элементы управления или другие.
Экран должен выглядеть следующим образом: http://www.manageinvest.com/good.jpg в высоком разрешении он выглядит примерно так: bad.jpg(это мой первый пост, поэтому мне разрешена только одна ссылка)
Какие-либо предложения?
Заранее спасибо,
Kristian
3 ответа
Теоретически, масштабирование шрифтов и DPI в Winforms происходит автоматически. На практике... не так много.
Я заметил, что он лучше справляется с вертикальным масштабированием, чем с горизонтальным, но даже тогда он далек от совершенства.
По моему опыту, масштабирование надежно только тогда, когда вы делаете одну из двух вещей:
Не используйте дизайнер вообще. Это довольно болезненно, но дает вам необходимый контроль над макетом.
Используйте встроенные элементы управления макетом - в частности,
FlowLayoutPanel
а такжеTableLayoutPanel
, Эти ребята твои лучшие друзья; Я редко делаю что-либо в Winforms без них больше.
В вашем случае, я бы, наверное, пошел с #2. Основываясь на снимке экрана, я думаю, было бы достаточно легко вписать ваш макет в комбинацию TableLayoutPanel
а также FlowLayoutPanel
контейнеры - возможно, даже один TableLayoutPanel
,
Вы должны изучить функции AutoScaleMode и AutoSize. В сочетании со способностями стыковки вы сможете достичь желаемого.
У меня была действительно хорошая статья на эту тему, но ссылка мертва... в любом случае, это должно помочь вам начать:
http://msdn.microsoft.com/en-us/library/ms229605.aspx
http://www.sellsbrothers.com/writing/winformsAutoScaling.htm
http://msdn.microsoft.com/en-us/library/system.windows.forms.autoscalemode.aspx
Это может не решить вашу проблему.
Но мы узнали, как сложнее расположить метку и элементы управления текстом вертикально, то есть разместить текстовое поле под меткой, а не рядом с меткой. Это решило для нас много проблем, включая поддержку нескольких языков, так как ширина текста на разных языках может быть больше, чем текст на английском языке.