2010-08-09 64 views
22

我在WPF注意到,12个点的默认字体大小大致相当于在“正常”的应用程序9点(例如写字板),10磅在WPF是大致7 pt标准,当我尝试在WPF写字板中匹配默认字体大小10 pt时,我发现13是最接近的。WPF字体大小和“标准”字体大小之间的转换

首先,为什么WPF使用这种离奇的非标准字体大小,其次,有没有在两者之间转换的可靠途径?

我问的原因是我想建立一个字体大小菜单,标准字体大小为9,10,12,14,16,18,24,36,48,但我很确定我是否可以使用这些实际值,他们将被疯狂地关闭。

回答

30

WPF使用像素作为其默认单位font sizepoints之间的映射(可能是你的意思是当你说“标准”字体大小)和像素是:1磅=(七十二分之九十六)PX

这给了我们一个简单的转换功能:

public static double PointsToPixels(double points) 
{ 
    return points*(96.0/72.0); 
} 

有关更多详细信息,请参阅this question

+0

谢谢!这似乎是缺失的关键。我也看到我可以用“合格双精度”指定字体大小,并指定点数作为单位,但是我想知道如何从代码中做到这一点。 – devios1 2010-08-09 23:32:31

+1

值得指出的是,WPF文档通过将这些1/96英寸像素作为“em单元”与“em”的印刷含义完全不同(与[CSS](http:// www .w3.org/TR/CSS21/syndata.html#value-def-length)) – 2012-08-10 15:20:24

19

转换的另一种方法,如果你从点到WPF去双是使用System.Windows.FontSizeConverter类:

double sizeForWpf = (double) new FontSizeConverter().ConvertFrom("10pt"); 
+3

现在,如何将**转换回** ** sizeForWpf? – moldovanu 2012-03-23 15:57:06