2009-08-26 2 views
1

WPF를 사용하여 사용자 정의 텍스트 편집기를 작성 중이며 TextBlock 스택을 사용하여 선을 렌더링하고 있습니다. 그걸로 문제가 발생하면 단어 랩 한 줄에서 다음 줄로 이동합니다.단어 랩을 수행 할 문자의 폭을 찾으십시오.

가장 좋은 방법은 무엇입니까? 각 문자/글리프 (각 문자에 대해 FormatedText 클래스를 만드는 것 이외의) 너비를 찾는 방법이 있습니까?

답변

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); 
관련 문제