2

拡張RichTextBoxコントロールを作成しており、テキスト行の横にアイコンを描画しています。GetPositionFromCharIndexを使用して、現在の行と次の行のY座標を検索しているので、現在の行の高さと中央を決定できます。このメソッドは、次の行がないため、最後の行に遭遇すると明らかに機能を停止します。テキストの最後の行の高さを決定する方法はありますか?フォントサイズは行ごとに異なる可能性があることに注意してください。

4

1 に答える 1

3

するのは簡単ではありません。 これに対するAPI呼び出しがあるかもしれませんが、100%確実ではありません。

これを実現するためのハッキーな方法は、画面外のRichTextBoxコントロールを使用して、RTFプロパティを転送することです。これにより、最後に追加の\ parが追加されるため、次の行が追加されます。

using (RichTextBox r = new RichTextBox()) {
  r.SelectAll();
  r.SelectedRtf = richTextBox1.Rtf;
  for (int i = 1; i < r.Lines.Length; i++) {
    Point p1 = r.GetPositionFromCharIndex(r.GetFirstCharIndexFromLine(i - 1));
    Point p2= r.GetPositionFromCharIndex(r.GetFirstCharIndexFromLine(i));
    int height = p2.Y - p1.Y;
    MessageBox.Show(String.Format("Line #{0} height = {1}", i - 1, height));
  }
}
于 2012-05-14T18:40:57.427 に答える