Вопрос по c#, winforms, .net-4.0 – Правильный подход к работе с автоматическим масштабированием

11

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

Моя система (Sony VAIO) по умолчанию составляет 125% в этом меню:

Display scaling

Из того, что я могу сказать, 125% устанавливает для DPI значение 120, а размер шрифта по умолчанию (меню и т. Д.) - 11pt. В системе другого разработчика его значения по умолчанию равны 100%, что составляет 96 точек на дюйм, и шрифта 9pt. Я не уверен, но я думаю, что только DPI вызывает у нас горе.

Проблема проявляется в том, что текст имеет неправильный размер и либо закрывает другие элементы управления, либо слишком разнесен (в зависимости от того, кто его открывал в дизайнере в последний раз). Насколько я могу сказать, всеContainerControls установлены вAutoScaleMode.Inheritи форма верхнего уровняAutoScaleMode.Dpi, Это то, что использует большинство других людей?

Интересно ... они дали какую-то конкретную причину? Branko Dimitrijevic
Я полагаю, что это потому, что у них нет никого, кто знаком с WPF, чтобы поддержать это после его доставки. Jonathon Reinhart
Не могли бы вы не работать на 100%? tymtam
Реальным решением было бы использовать WPF и его надежные механизмы компоновки. Практически ли в данный момент переключение всего проекта на WPF - это другой вопрос ... Branko Dimitrijevic
К сожалению, клиент специально запросил этоnot быть сделано в WPF. Jonathon Reinhart

Ваш Ответ

3   ответа
4

У меня была такая же проблема с одним из моих приложений. Ответ был перенести его в WPF. Решение, с которым я пришел, когда все еще использовал WinForms, состояло в том, чтобы иметь 2 исполняемых файла. Один разработан под 96 точек на дюйм, а другой под 120 точек на дюйм. Это было двойное усилие, но я попробовал любые конфигурации макета без успеха. Если мои элементы управления выглядели нормально на 96 точек на дюйм, то при переключении на 120 точек на дюйм они находились за пределами окна приложения. И наоборот.

WPF - единственное решение этой надоедливой проблемы.

0

В конце концов, наше решение былоdisable Автоматическое масштабирование путем настройкиAutoScaleMode = AutoScaleMode.None, Это требовало некоторого тщательного размещения вещей (и оставляло большие промежутки, чем хотелось бы), но, по крайней мере, Auto-Scale не появлялось и не портило вещи.

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

0

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

Когда я изменил dpi на своем компьютере и открыл дизайнер, я не увидел никаких проблем с форматированием ... Может быть, может помочь какая-то дополнительная информация. Какие компоненты покрывают друг друга?

Похожие вопросы