Я написал приложение C # для Linux, которое компилируется с помощью mono (gmcs
) и использует библиотеку WinForms 2.0 для визуализации пользовательского интерфейса. Мое приложение отлично выглядит на моем компьютере, но один из моих клиентов использует компьютер (Fedora / OLPC a>) с большим размером шрифта, и автоматическое масштабирование у него не полностью работало (текст стал больше, а размеры пользовательских элементов управления остались прежними).
Если бы я мог увеличить мой размер шрифта и воспроизвести проблему на моем компьютере с 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 ответа
(Ханс Пассан дал правильный ответ на этот вопрос, но его ответа больше нет, поэтому я отвечу на свой вопрос.)
Размер шрифта, используемый Mono Winforms, определяется настройкой разрешения (DPI) в Ubuntu, доступ к которой можно получить, перейдя в System -> Preferences -> Appearance -> Fonts -> Details.
Вам, вероятно, лучше всего отключить автоматическое масштабирование:
http://www.mono-project.com/FAQ:_Winforms
Более распространенный ответ: согласно моим экспериментам, Mono вычисляет фактический размер шрифта на основе значения Xft.dpi
. Его можно получить с помощью xrdb -query Xft.dpi
и динамически установить во время выполнения с помощью echo Xft.dpi: VALUE | xrdb
.
Обратите внимание, что некоторые приложения обновляют свой пользовательский интерфейс сразу после изменения значения, а другие (включая Mono) проверяют его только при запуске.
Настройка Ubuntu System -> Preferences -> Appearance -> Fonts -> Details
, упомянутая в ответе Дэвида Грейсона, скорее всего, изменит то же значение.
Похожие вопросы
Новые вопросы
winforms
WinForms - это неофициальное имя, данное Windows Forms, библиотеке классов GUI в Microsoft .NET Framework и Mono. Вопросы в этом теге также должны быть помечены целевой структурой ([.net] или [mono]) и обычно должны быть помечены тегом языка программирования.