我为Linux编写了一个C#应用程序,由mono(gmcs
)编译,并使用WinForms 2.0库呈现用户界面。我的应用程序在我的计算机上看起来很好,但我的一个客户是使用具有大字体大小的计算机(Fedora / OLPC),并且自动缩放对他来说并不完全有效(文本在用户时变得更大)控制尺寸保持不变)。
如果我可以增加我的字体大小并在我的 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)));
答案 0 :(得分:1)
最好禁用AutoScaling:
答案 1 :(得分:0)
(Hans Passant给出了这个问题的正确答案,但他的答案已经不在了,所以我将回答我自己的问题。)
Mono Winforms使用的字体大小由Ubuntu中的Resolution(DPI)设置决定,可以通过转到System - >来访问它。偏好 - >外观 - >字体 - >的信息。
答案 2 :(得分:0)
更常见的答案是:根据我的实验,Mono根据Xft.dpi
值计算实际字体大小。可以使用xrdb -query Xft.dpi
来获得它,并且可以在运行时使用echo Xft.dpi: VALUE | xrdb
对其进行动态设置。
请注意,某些应用更改了值后会立即更新其UI,而其他应用(包括Mono)仅在启动时对其进行检查。
David Grayson的答案中提到的Ubuntu的System -> Preferences -> Appearance -> Fonts -> Details
设置很可能会更改相同的值。