WPF를 사용하여 많은 수의 짧은 문자열을 측정하는 가장 효율적인 방법은 무엇입니까? 특히, 나는 각 문자열의 표시 높이를 결정하고, 동일한 서식 (동일한 글꼴, 크기, 무게 등) 및 문자열이 차지할 수있는 최대 너비를 결정하고 싶습니다.WPF에서 텍스트 측정
답변
대부분의 저수준 기법 (따라서 창조적 최적화를위한 최대 범위 제공)은 GlyphRuns를 사용하는 것입니다.
아주 잘 문서화하지만 난 여기에 작은 예를 썼다 아니에요 :
이http://smellegantcode.wordpress.com/2008/07/03/glyphrun-and-so-forth/
예는 렌더링하기 전에 필요한 단계로 문자열의 길이를 밖으로 작동합니다.
당신은 폭과 높이를 얻기 위해 렌더링 된 텍스트 상자에 DesiredSize를 속성을 사용할 수 있습니다
using System.Windows.Threading;
...
Double TextWidth = 0;
Double TextHeight = 0;
...
MyTextBox.Text = "Words to measure size of";
this.Dispatcher.BeginInvoke(
DispatcherPriority.Background,
new DispatcherOperationCallback(delegate(Object state) {
var size = MyTextBox.DesiredSize;
this.TextWidth = size.Width;
this.TextHeight = size.Height;
return null;
}
) , null);
당신은 문자열의 많은 수의 첫 사전 calualte에 빨리마다의 높이와 폭 될 수있는 경우 indiviudal 문자와 기호를 주어진 글꼴로 변환 한 다음 char 문자를 기반으로 계산을 수행합니다. 이것은 커닝 (kerning) 등으로 인해 100 % 정확하지 않을 수 있습니다.
FormattedText 클래스를 사용하면 매우 간단합니다. 사용해보기.
WPF에서UniversalWindows에서는 FormattedText를 사용할 수 없습니다. 도와주세요! –
:
는 DesiredSize를 속성을 읽기 전에 TextBlock의()를 측정를 호출해야합니다.
TextBlock이가 즉석에서 만든, 아직 표시되지 않은 경우, 당신은과 같이, 첫째) 측정을 (전화를해야 :
MyTextBlock.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity));
return new Size(MyTextBlock.DesiredSize.Width, MyTextBlock.DesiredSize.Height);
실버 라이트에서 :
측정 할 필요가 없습니다.
MSDN 포럼에- 1. WPF에서 런타임에 생성되는 측정 컨트롤
- 2. AWT 텍스트 측정 구현
- 3. 자바 스크립트에서 텍스트 크기 측정
- 4. wpf에서 선택 가능한 텍스트
- 5. WPF에서 텍스트 블록 원본 변경
- 6. 글꼴을 포함한 텍스트 너비를 org.faceless.pdf.PDFFont 인스턴스로 측정
- 7. 자바 스크립트에서 텍스트 노드 바운딩 박스 측정
- 8. WPF에서 하위 창의 컨트롤 텍스트 설정
- 9. 어떻게 wpf에서 텍스트 상자를 고정시킬 수 있습니까?
- 10. wpf에서 여러 텍스트 상자 값 지우기
- 11. WPF에서 두 개의 텍스트 상자 동기화하기
- 12. WPF에서 코드에서 DataTemplate의 텍스트 블록 텍스트 바인딩을 변경하는 방법은 무엇입니까?
- 13. 응용 프로그램/스레드에서 측정 된 측정 시간
- 14. 측정 클래스 종속성
- 15. 근거리 측정
- 16. 품질 측정
- 17. 측정 방법은?
- 18. Scipy.cluster.hierarchy.fclusterdata + 거리 측정
- 19. WPF에서 BindingExpressing
- 20. WPF에서 복사 텍스트 옵션을 사용하여 텍스트 블록을 만드는 방법 (OR) 텍스트 자르기 옵션이있는 텍스트 상자
- 21. Silverlight 백그라운드 높이 측정 스레드
- 22. WPF에서 캐럿 숨기기 TextBox
- 23. WPF에서 TreeviewItem 선택
- 24. WPF에서 TextBox 바인딩
- 25. F # 측정 단위, 측정 유형을 잃지 않고 캐스팅
- 26. Mdx는 측정 값과 측정 값에 대해 반복되는 값을 생성합니다.
- 27. 오디오 잡음 레벨 측정
- 28. 문자열의 픽셀 너비 측정
- 29. 자바 스크립트 포커스 측정
- 30. 웹 사이트 측정
같은 질문을 몇 가지 더 나은 솔루션을 가지고
: http://social.msdn.microsoft.com/Forums/en-US/wpf/전체 코드는 다음과 같습니다 thread/a450b0aa-7086-4145-9eff-a779571b6187/ – srgstm