проблемы с высоким DPI - PullRequest
       25

проблемы с высоким DPI

6 голосов
/ 22 января 2010

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

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

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

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

Есть предложения?

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

Kristian

Ответы [ 3 ]

6 голосов
/ 22 января 2010

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

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

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

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

  2. Используйте встроенные элементы управления макетом, в частности, FlowLayoutPanel и TableLayoutPanel. Эти ребята твои лучшие друзья; Я редко делаю что-либо в Winforms без них.

В вашем случае, я бы, наверное, пошел с # 2. Основываясь на снимке экрана, я думаю, что было бы довольно просто разместить ваш макет в комбинации контейнеров TableLayoutPanel и FlowLayoutPanel - возможно, даже в одном TableLayoutPanel.

3 голосов
/ 22 января 2010

Вы должны изучить функции 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

1 голос
/ 22 января 2010

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

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

...