我无法弄清楚 C# TextMetrics 属性是如何工作的。下面的示例,我在某处找到并稍作修改,做了一些事情,但无论我在文本框中设置什么字体,结果似乎都是 7。
TextMetrics metrics;
VisualStyleRenderer renderer = new VisualStyleRenderer(VisualStyleElement.TextBox.TextEdit.Normal);
using (IDeviceContext context = textBox1.CreateGraphics() as IDeviceContext)
{
metrics = renderer.GetTextMetrics(context);
}
int averageWidth = metrics.AverageCharWidth;
textBox1.Text = averageWidth.ToString(); // 7
MSDN 没有提供任何示例,我也没有在任何其他网站上找到任何可以理解的内容。有人可以解释这是如何工作的吗?
PS:我想使用所有的 TextMetrics 属性。不仅仅是AverageCharWidth。
更新:我正在编写一个字体查看器,使用私有字体集合。我想尽可能多地获取有关每种字体的信息。然后我可以决定在字体查看器中包含什么有用,什么不是。
我的字体查看器提醒 Bitstream Font Navigator ( http://noscope.com/2004/font-management-solution/ ),但我想包含有关字体的更多信息。
更新:我可以使用 FontFamily 方法来获取一些信息,正如 Olivier Jacot-Descombes 在他的回答中指出的那样,但不是全部。我想我需要使用 TextMetrics 来获取有关例如 PitchAndFamily、MaxCharWidth 和 AverageCharWidth 的信息。还是有其他简单的方法来获取这些信息?