2009-12-22 63 views
3

我正在创建一个.Net 2.0 SP2窗体窗体应用程序。在我的机器中,表单字体看起来很好,当我在另一台机器上尝试时,它看起来更大。 (这不是因为分辨率差异,字体相对于其他图标等更大).Net Inconsistent Font rendering

我试图调试问题,发现下面的代码在不同的机器上返回不同的大小。

//inside a windows form 
private void checkfont() 
{ 
    var g = this.CreateGraphics(); 
    MessageBox.Show(g.MeasureString("Hello World", this.Font) + "," + this.Font); 
} 

我希望graphics.measurestring()返回在不同的机器上相同的参数值相同。

对于字体 '宋体8.25'

  • 机器1 “Hello World” 的措施69.0px,14.7px
  • 机器2 “Hello World” 的措施86.3px,18.4px

为什么这个区别?正因为如此,我的应用程序字体看起来更大,并影响布局。

alt text alt text

编辑:

两台机器的.Net 2.0 SP2,但它们的分辨率和屏幕尺寸不同。我知道字体的物理尺寸(在物理屏幕上)会随着分辨率和屏幕尺寸而变化。但我的问题是为什么像素单位的尺寸不同?

机器2是eeetop ET1602与Windows XP,其触摸屏系统,默认情况下,它带有所有桌面字体较大,但我已将Windows主题/ Windows字体重置为默认值。

+1

机器是否有不同的视频卡,字体设置,服务包,驱动程序等?所有这些都可能影响到这一点。 – GrayWizardx 2009-12-22 07:36:27

回答

4

当您调整“Verdana 8.25”时,此8.25与像素直接无关,而是被视为“点”,并且如果屏幕DPI不同,它们将在不同的机器上以不同方式渲染。

在Windows中,在桌面设置下,您可以选择增加屏幕字体大小而不更改分辨率。如果您增加屏幕字体大小,则每像素点数会发生变化,这可以测量不同机器上相同文本的不同像素大小。

这是由于老人无法读取更小的字体,这就是为什么他们可以增加桌面设置的字体大小。而且只能以点为单位指定字体大小,如果字体大小固定为像素,那么旧的或视力受损的人难以正确读取文本。这样整个操作系统的文本大小就受到用户的控制。

+0

“Display Properties> Apperance> font size> Normal”does not help 但是“Display Properties> Settings> Advanced> Display dpi setting> Normal Size 96 Dpi”解决了问题 – Palani 2009-12-22 08:17:45

1

这看起来像DPI字体缩放设置为“大字体”?

编辑
见阿卡什卡瓦的答复 - 他进入更详细的“大字体”设置。