Mono';WinForms确定系统字体大小?

Mono';WinForms确定系统字体大小?,winforms,mono,autoscalemode,Winforms,Mono,Autoscalemode,我为Linux编写了一个C应用程序,由mono(gmcs)编译,并使用WinForms 2.0库呈现用户界面。我的应用程序在我的计算机上看起来很好,但我的一个客户正在使用一台大字体的计算机(Fedora/),自动缩放对他来说并不完全有效(文本变大了,而用户控件的大小保持不变) 如果我能增加我的字体大小并在我的Ubuntu计算机上重现这个问题,我相信我能解决这个问题(通过为我的所有控件设置正确的AutoScaleMode和AutoScaleDimensions)但是当我试图在“系统->首选项->外

我为Linux编写了一个C应用程序,由mono(
gmcs
)编译,并使用WinForms 2.0库呈现用户界面。我的应用程序在我的计算机上看起来很好,但我的一个客户正在使用一台大字体的计算机(Fedora/),自动缩放对他来说并不完全有效(文本变大了,而用户控件的大小保持不变)

如果我能增加我的字体大小并在我的Ubuntu计算机上重现这个问题,我相信我能解决这个问题(通过为我的所有控件设置正确的AutoScaleMode和AutoScaleDimensions)但是当我试图在“系统->首选项->外观”对话框中增加系统字体大小时,我的字体大小设置似乎对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)));

您最好禁用自动缩放:

(汉斯·帕桑对这个问题给出了正确的答案,但他的答案已经不在这里了,所以我将回答我自己的问题。)


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

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

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

David Grayson在回答中提到的Ubuntu的
系统->首选项->外观->字体->详细信息
设置很可能会改变相同的值