FormattedText.BuildGeometry를 사용하여 문자 배치 방법을 결정하여 마우스의 논리 위치를 결정하려고합니다. 필자의 맥락에서 FormattedText는 한 줄로 가정 할 수 있습니다. 각 문자에 대해 하위 지오메트리가있는 1 개의 하위 그룹으로 지오메트리 그룹을 가져와야합니다. 문자 "f"및 "t"의 경우 FormattedText 텍스트에서 문자를 반복하면 행의 지오메트리 수가 텍스트의 문자 수보다 하나 작아집니다.FormattedText.BuildGeometry 문자 삭제
예제 코드 :
var tf = new Typeface(new FontFamily("Calibri"), FontStyles.Normal, FontWeights.Normal, FontStretches.Normal);
var ft = new FormattedText("ff", CultureInfo.CurrentCulture, FlowDirection.LeftToRight, tf, 14, Brushes.Black);
var g = ft.BuildGeometry(new Point(0, 0));
var gc = (GeometryGroup)((GeometryGroup)g).Children[0];
Debug.Assert(gc.Children.Count == ft.Text.Length, "Expected length of " + ft.Text.Length + " but found " + gc.Children.Count);
당신은 빈 WPF 응용 프로그램에서 버튼이 첨부 할 수 있습니다.
"ff"또는 "tt"가 포함 된 항목에 대해서는 실패합니다. 글꼴을 변경하면 동작이 바뀝니다.이 글꼴을 찾지 못한 글꼴이 있습니다.
대답은 다음과 같습니다. http://social.msdn.microsoft.com/Forums/eu/wpf/thread/ddd9c850-25a6-4b99-8a43-5816a0d329a1 –