У меня есть проблема с дисплеем нашего Приложения Windows.NET при высоких настройках точек на дюйм.
Все формы установлены на AutoScaleMode = DPI, но это не решает все проблемы.
В основном маркировки заканчивают тем, что расширились в размере для привыкания woth шрифт, являющийся больше, но местоположение других средств управления не изменяется, и мы заканчиваем с маркировками, затеняющими другие средства управления или друг друга.
Экран должен быть похожим на это: http://www.manageinvest.com/good.jpg.. и на высоком DPI это заканчивает тем, что было похоже на это: bad.jpg (это - мое первое сообщение, таким образом, мне только разрешают одну ссылку),
Какие-либо предложения?
Заранее спасибо,
Kristian
Теоретически, масштабирование шрифта и 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
Это может не решить вашу проблему.
Но мы узнали о том, что этикетка и текстовые элементы управления должны быть сложены вертикально, то есть поместите текстовое поле ниже метки, а не рядом с этикеткой. Это решило много проблем для нас, включая поддержку нескольких языков, как ширина текста на разных языках может быть больше, чем текст английского языка