大きな境界ボックスに文字列を描画し、StringFormatを使用して文字列を適切に配置します。しかし、文字列の実際の(X、Y)位置は、一度描画されると(MeasureStringで指定されたサイズだけではなく)必要です。WinForms(C#)を使用して文字列を描画した後の文字列の配置
私は以下のコードを使用しています:
CharacterRange[] ranges = { new CharacterRange(0, this.Text.Length) };
format.SetMeasurableCharacterRanges(ranges);
//Measure character range
Region[] region = g.MeasureCharacterRanges(this.Text, this.Font, layoutRect, format);
RectangleF boundsF = region[0].GetBounds(g);
bounds = new Rectangle((int)boundsF.Left, (int)boundsF.Top,
(int)boundsF.Width, (int)boundsF.Height);
をそれはとても欠落している宣言を無視するコードセグメントです。ポイントは、上のコードが与えた長方形が正しいサイズではなく、文字列の最後の文字が削除され、文字列の最初の行だけが描画されていることです。
誰でも知っているのでしょうか、それとももっと良い方法でしょうか?
おかげ
応じTextRendererで再び測定し、サイズと位置を調整しています。 – Shimmy