2012-05-14 30 views
2

我正在創建一個擴展的RichTextBox控件,我正在繪製圖標旁邊的文本行。我使用GetPositionFromCharIndex查找當前行和下一行Y座標,以確定當前行的高度和中間位置。當遇到最後一行時,此方法顯然停止工作,因爲沒有下一行。有什麼方法可以確定最後一行文本的高度嗎?請注意,字體大小可能因行而異。如何確定RichTextBox中最後一行的文本高度?

回答

3

不容易做到。 也許有一個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)); 
    } 
} 
+0

我有一個類似的想法,但它涉及在實際文本的末尾添加一個換行符。 –

相關問題