获取任何给定字符的像素宽度

时间:2011-04-08 03:25:04

标签: .net wpf winforms graphics fonts

我有这个非常棒的想法,但是无法确定.NET Framework中是否有任何类(任何版本,最好是3.5或4.0)允许您传入一个字符,并返回宽度(以像素为单位)该字符,无论使用哪种字体,字体大小或字体装饰。有人可以指点我正确的方向吗?对于这样的事情,是否存在类/某事?

2 个答案:

答案 0 :(得分:5)

查看Graphics.MeasureString方法。

从链接改编的代码示例:

SizeF charSize = e.Graphics.MeasureString("X", new Font("Arial", 16));
// do stuff with charSize ...

上面的示例假设您位于Paint事件处理程序的函数体中,并且已经为您创建了Graphics对象并将其作为事件参数传入。如果您不希望或不能在Paint处理程序中执行此操作,则可以使用Control.CreateGraphics在方便时创建图形对象。

答案 1 :(得分:4)

如果WPF适合你(我看到有人刚刚删除了这个问题的WPF标签,但它最初就在那里)还有FormattedText

FormattedText formattedText = new FormattedText("hello foo",
                                                CultureInfo.GetCultureInfo("en-us"),
                                                FlowDirection.LeftToRight,
                                                new Typeface("Arial"),
                                                FontSize = 14,
                                                Brushes.Black);
double width = formattedText.Width;