c# – WPF RichTextBox GetCharacterRect

我正在尝试为在richtextbox中键入的所有字符获取字符rect.从MyRichTextBox.Document.ContentStart文本指针开始,我使用以下代码推进每个字符

currentPointer = currentPointer.GetNextInsertionPosition(LogicalDirection.Forward)

并使用以下代码检索“character”rect

currentPointer.GetCharacterRect(LogicalDirection.Forward)

但看起来,对于从上面的代码返回的任何textpointer,rect的宽度始终为0.现在我能够根据前一个字符rect和当前字符rect之间的区域计算字符rect,但这会导致发生自动换行时的问题.

有没有办法可以从富文本框的GetCharacterRect()函数中获得非零宽度?

编辑

来自Microsoft here的内容显示相同.有人知道测量字符rect的替代方法吗?

最佳答案 GetCharacterRect只返回一个矩形,表示相关字符的前沿(即零宽度,但准确的高度和位置) – 而不是“包装矩形”…虽然如果这就是你所追求的,你可以抓住两个连续字符的前沿并进行数学运算.

点赞