2
我正在創建一個擴展的RichTextBox控件,我正在繪製圖標旁邊的文本行。我使用GetPositionFromCharIndex查找當前行和下一行Y座標,以確定當前行的高度和中間位置。當遇到最後一行時,此方法顯然停止工作,因爲沒有下一行。有什麼方法可以確定最後一行文本的高度嗎?請注意,字體大小可能因行而異。如何確定RichTextBox中最後一行的文本高度?
我正在創建一個擴展的RichTextBox控件,我正在繪製圖標旁邊的文本行。我使用GetPositionFromCharIndex查找當前行和下一行Y座標,以確定當前行的高度和中間位置。當遇到最後一行時,此方法顯然停止工作,因爲沒有下一行。有什麼方法可以確定最後一行文本的高度嗎?請注意,字體大小可能因行而異。如何確定RichTextBox中最後一行的文本高度?
不容易做到。 也許有一個API調用這個,但我不是100%確定。
哈克的方式來完成,這是使用一個離屏RichTextBox控件和轉移RTF屬性它,這只是發生末爲你添加一個額外的\相提並論,所以有一個額外的行現在:
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));
}
}
我有一個類似的想法,但它涉及在實際文本的末尾添加一個換行符。 –