Я написал приложение 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
David Grayson 22 Дек 2010 в 02:56

3 ответа

Лучший ответ

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

Размер шрифта, используемый Mono Winforms, определяется настройкой разрешения (DPI) в Ubuntu, доступ к которой можно получить, перейдя в System -> Preferences -> Appearance -> Fonts -> Details.

0
David Grayson 13 Мар 2011 в 21:40

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

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

1
jpobst 22 Дек 2010 в 18:48

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

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

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

0
MarSoft 5 Янв 2019 в 02:09