找到要做wordwrap的字符宽度

时间:2009-08-26 15:26:31

标签: wpf word-wrap

我正在使用WPF编写一个自定义texteditor,并使用一堆TextBlock来渲染这些行。这导致我找到什么时候从一行到另一行 wordwrap 的问题。

最好的方法是什么?有没有办法找到每个字符/字形的宽度(除了为每个字符创建一个FormatedText类)?

1 个答案:

答案 0 :(得分:3)

我必须这样做才能解决this problem。也许你可以查看那里的代码。代码的相关部分是:

var textPointer = run.ContentStart;
textPointer = textPointer.GetPositionAtOffset(start, LogicalDirection.Forward);
var leftRectangle = textPointer.GetCharacterRect(LogicalDirection.Forward);
textPointer = textPointer.GetPositionAtOffset(length, LogicalDirection.Forward);
var rightRectangle = textPointer.GetCharacterRect(LogicalDirection.Backward);
var rect = new Rect(leftRectangle.TopLeft, rightRectangle.BottomRight);
var translatedPoint = uiHost.TranslatePoint(new Point(0, 0), null);
rect.Offset(translatedPoint.X, translatedPoint.Y);