1

我正在编写一个 WinForms 用户控件。我的计划是允许调用者修改控件的字体,但强制字体始终是固定宽度的字体。

然后我需要在控件中水平放置一个插入符号。当我在 C++ 中执行此操作时,我使用了GetTextMetrics()TEXTMETRIC.tmAveCharWidth. 但是在这个周末花了很多时间之后,我无法在 C#/WinForms 中复制它。

我知道有一种方法可以声明它,所以我可以GetTextMetrics()直接调用。但我希望有一种 .NET 方式来做到这一点。(如果没有,是否有人有正确的语法在 .NET 中声明此 API 函数)

4

1 回答 1

2

这适用于 Windows 窗体:

 TextMetrics metrics;
 var renderer = new VisualStyleRenderer(VisualStyleElement.Window.Dialog.Normal);

 using (var context = this.CreateGraphics() as IDeviceContext)
 {
     var metrics = renderer.GetTextMetrics(context);
 }

 var averageWidth = metrics.AverageCharWidth;
于 2012-11-19T16:40:16.290 回答