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 に答える