我有这个非常棒的想法,但是无法确定.NET Framework中是否有任何类(任何版本,最好是3.5或4.0)允许您传入一个字符,并返回宽度(以像素为单位)该字符,无论使用哪种字体,字体大小或字体装饰。有人可以指点我正确的方向吗?对于这样的事情,是否存在类/某事?
答案 0 :(得分:5)
从链接改编的代码示例:
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;