我在WPF注意到,12个点的默认字体大小大致相当于在“正常”的应用程序9点(例如写字板),10磅在WPF是大致7 pt标准,当我尝试在WPF写字板中匹配默认字体大小10 pt时,我发现13是最接近的。WPF字体大小和“标准”字体大小之间的转换
首先,为什么WPF使用这种离奇的非标准字体大小,其次,有没有在两者之间转换的可靠途径?
我问的原因是我想建立一个字体大小菜单,标准字体大小为9,10,12,14,16,18,24,36,48,但我很确定我是否可以使用这些实际值,他们将被疯狂地关闭。
我在WPF注意到,12个点的默认字体大小大致相当于在“正常”的应用程序9点(例如写字板),10磅在WPF是大致7 pt标准,当我尝试在WPF写字板中匹配默认字体大小10 pt时,我发现13是最接近的。WPF字体大小和“标准”字体大小之间的转换
首先,为什么WPF使用这种离奇的非标准字体大小,其次,有没有在两者之间转换的可靠途径?
我问的原因是我想建立一个字体大小菜单,标准字体大小为9,10,12,14,16,18,24,36,48,但我很确定我是否可以使用这些实际值,他们将被疯狂地关闭。
WPF使用像素作为其默认单位font size。 points之间的映射(可能是你的意思是当你说“标准”字体大小)和像素是:1磅=(七十二分之九十六)PX
这给了我们一个简单的转换功能:
public static double PointsToPixels(double points)
{
return points*(96.0/72.0);
}
有关更多详细信息,请参阅this question。
转换的另一种方法,如果你从点到WPF去双是使用System.Windows.FontSizeConverter类:
double sizeForWpf = (double) new FontSizeConverter().ConvertFrom("10pt");
现在,如何将**转换回** ** sizeForWpf? – moldovanu 2012-03-23 15:57:06
谢谢!这似乎是缺失的关键。我也看到我可以用“合格双精度”指定字体大小,并指定点数作为单位,但是我想知道如何从代码中做到这一点。 – devios1 2010-08-09 23:32:31
值得指出的是,WPF文档通过将这些1/96英寸像素作为“em单元”与“em”的印刷含义完全不同(与[CSS](http:// www .w3.org/TR/CSS21/syndata.html#value-def-length)) – 2012-08-10 15:20:24