3

我为 Linux 编写了一个 C# 应用程序,它由 mono ( gmcs) 编译并使用 WinForms 2.0 库呈现用户界面。我的应用程序在我的计算机上看起来不错,但是我的一个客户正在使用具有大字体大小的计算机(Fedora/ OLPC),并且自动缩放并不完全适合他(文本变大而用户控件大小保持不变)相同的)。

如果我可以增加我的字体大小并在我的Ubuntu 计算机上重现该问题,我确信我可以解决该问题(通过为我的所有控件设置正确的 AutoScaleMode 和 AutoScaleDimensions)。 但是当我尝试在System -> Preferences -> Appearance对话框中增加我的系统字体大小时,我的字体大小设置似乎对 Winforms 渲染的 UI 没有任何影响。

那么,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)));
4

3 回答 3

1

您最好禁用 AutoScaling:

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

于 2010-12-22T15:48:26.113 回答
0

(Hans Passant 给出了这个问题的正确答案,但他的答案不再在这里,所以我将回答我自己的问题。)

Mono Winforms 使用的字体大小由 Ubuntu 中的分辨率 (DPI) 设置决定,可以通过转到系统 -> 首选项 -> 外观 -> 字体 -> 详细信息来访问。

于 2011-03-13T18:40:25.370 回答
0

更常见的答案是:根据我的实验,Mono 根据Xft.dpi值计算实际字体大小。它可以使用 获取xrdb -query Xft.dpi,也可以在运行时使用echo Xft.dpi: VALUE | xrdb.

请注意,某些应用程序在更改值后会立即更新其 UI,而其他应用程序(包括 Mono)仅在启动时检查它。

System -> Preferences -> Appearance -> Fonts -> DetailsDavid Grayson 的回答中提到的Ubuntu设置很可能会更改相同的值。

于 2019-01-04T23:09:43.417 回答