Проблемы с высоким разрешением

У меня проблема с отображением нашего приложения Windows.NET в настройках с высоким разрешением.

Для всех форм установлено AutoScaleMode = DPI, но это не решает всех проблем.

В основном, метки в конечном итоге увеличиваются в размере, чтобы справиться с тем, какой шрифт больше, но расположение других элементов управления не меняется, и в результате мы получаем метки, скрывающие другие элементы управления или другие.

Экран должен выглядеть следующим образом: http://www.manageinvest.com/good.jpg в высоком разрешении он выглядит примерно так: bad.jpg(это мой первый пост, поэтому мне разрешена только одна ссылка)

Какие-либо предложения?

Заранее спасибо,

Kristian

3 ответа

Теоретически, масштабирование шрифтов и DPI в Winforms происходит автоматически. На практике... не так много.

Я заметил, что он лучше справляется с вертикальным масштабированием, чем с горизонтальным, но даже тогда он далек от совершенства.

По моему опыту, масштабирование надежно только тогда, когда вы делаете одну из двух вещей:

  1. Не используйте дизайнер вообще. Это довольно болезненно, но дает вам необходимый контроль над макетом.

  2. Используйте встроенные элементы управления макетом - в частности, 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

Это может не решить вашу проблему.

Но мы узнали, как сложнее расположить метку и элементы управления текстом вертикально, то есть разместить текстовое поле под меткой, а не рядом с меткой. Это решило для нас много проблем, включая поддержку нескольких языков, так как ширина текста на разных языках может быть больше, чем текст на английском языке.

Другие вопросы по тегам