Как Mono WinForms определяет размер системного шрифта? - PullRequest
3 голосов
/ 22 декабря 2010

Я написал C # -приложение для Linux, которое компилируется с помощью mono (gmcs) и использует библиотеку WinForms 2.0 для визуализации пользовательского интерфейса.Мое приложение отлично выглядит на моем компьютере, но одним из моих клиентов является использование компьютера (Fedora / OLPC ) с большим размером шрифта, и автоматическое масштабирование не работает для него полностью (текст становится большехотя размеры элементов управления остались прежними). ​​

Если бы я смог увеличить размер моего шрифта и воспроизвести проблему на моем компьютере с Ubuntu, я уверен, что смогу исправитьпроблема (путем установки правильных AutoScaleMode и AutoScaleDimensions для всех моих элементов управления). Но когда я пытаюсь увеличить размер системного шрифта в диалоговом окне Система -> Настройки -> Внешний вид , настройки размера шрифта, похоже, не влияют на пользовательский интерфейс, отображаемый в Winforms.

Итак, как Mono WinForms определяет размер системного шрифта? Как я могу выбрать больший размер на моем компьютере?

Я использую Ubuntu 9.10 иMono winforms 2.4.2.3 + dfsg-2.

В случае, если это имеет значение, мое приложение было перенесено из Visual Studio, поэтому шрифты на элементе управления установлены в файлах .Designer.cs, например:

label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));

Ответы [ 3 ]

1 голос
/ 22 декабря 2010

Возможно, вам лучше отключить автоматическое масштабирование:

http://www.mono -project.com / FAQ: _Winforms

0 голосов
/ 05 января 2019

Более распространенный ответ: согласно моим экспериментам, Mono рассчитывает фактический размер шрифта на основе значения Xft.dpi. Его можно получить с помощью xrdb -query Xft.dpi и динамически установить во время выполнения с помощью echo Xft.dpi: VALUE | xrdb.

Обратите внимание, что некоторые приложения обновляют свой интерфейс сразу после изменения значения, а другие (включая Mono) проверяют его только при запуске.

Параметр System -> Preferences -> Appearance -> Fonts -> Details в Ubuntu, упомянутый в ответе Дэвида Грейсона, скорее всего изменит то же значение.

0 голосов
/ 13 марта 2011

(Ганс Пассант дал правильный ответ на этот вопрос, но его ответа больше нет, поэтому я отвечу на свой вопрос.)

Размер шрифта, используемый Mono Winforms, определяется в соответствии с РезолюциейНастройка DPI) в Ubuntu, доступ к которому можно получить, перейдя в «Система» -> «Настройки» -> «Внешний вид» -> «Шрифты» -> «Подробнее».

...