まず第一に、回答How to measure width of character precisely?
された質問は、このケースでは実際には役に立たないため、これはその複製ではありません。
私はひもを持っています。を使用して描画しgraphics.DrawString
ますが、その後に別の文字列を配置する必要がある場合は、前の文字列の正確な幅を知る必要があります。
このために、graphics.MeasureString を次のように使用します。
StringFormat format = new StringFormat(StringFormat.GenericTypographic);
format.Alignment = StringAlignment.Center;
format.Trimming = StringTrimming.None;
format.FormatFlags = StringFormatFlags.MeasureTrailingSpaces;
私は他の多くの関数を試しTextRendered.MeasureText
ましたが、パラメータの可能なすべての組み合わせですべて失敗しました。
上記の MeasureString の組み合わせは、必要なものに最も近いものです (特殊文字を除いてほとんどの場合に機能します) が、 # のような文字を使用すると壊れます。幅は短くても長くてもかまいません。
DrawString 関数によって生成されたテキストの正確なサイズを取得する方法はありますか? DrawString は描画領域のサイズをどのように計算しますか? サイズが常に異なるため、明らかに他の関数である必要があります。
アプリケーション全体のソース コードはこちらhttps://gitorious.org/pidgeon/pidgeon-main/ (これを使用するファイルはhttps://gitorious.org/pidgeon/pidgeon-main/blobs/master/scrollbackです) /SBABox.cs )