2012-01-09 3 views
6

현재 글꼴 크기 200 인 <TextBlock> 요소가있는 경우 전체 요소가 필요한 것보다 훨씬 많은 공간을 차지합니다.텍스트 블록 크기 최소화

Wasted Space

(블렌드)에서 청색의 윤곽은 쉽게 절반이 필요할 때 소자가 차지하는 공간을 나타낸다. 어쨌든 나는 그 공간을 제거하여 내 요소가 그렇게 많이 떨어져 있지 않은가? 여백, 패딩 등을 시도했지만 대부분의 방법이 작동하지 않는 것 같습니다.

Ideal

가 이상적으로는 <textblock>

편집 빨간색 상자로 표시 공간의 양을 차지 할 것 : 응답에서

With Lower Cased Letters

이 stijn7하기를, 일부 공간은 실제로 다른 문자 (g, p, q 등)를 위해 예약되어 있습니다. 그러나 상단에는 여전히 많은 공간이 있습니다 (1은 Segoe UI에서 가장 높은 문자입니다). textblock을자를 수없는 경우 어쨌든 크기를 조정하여 낭비되는 공간이 없습니까?

+2

다른 캐릭터가 그 공간을 필요로하기 때문에 어쩌면 이렇게 될까요? 그래도 흥미로운 질문입니다. – stijn

+0

맨 위 공간은 다양한 언어의^및'와 같은 특수 문자 용입니다. 캐릭터 맵에서 Segoe를 보면, 이것들을 볼 수 있습니다. – dex3703

답변

1

여기서 문제는 TextBlock의 높이가 문자의 범위를 높이기 위해 ascender and descender을 사용한다는 것입니다. 선택한 문자는 글꼴 x-height에 있지만 그 너머는 아닙니다. 당신이 약간 낮은 수준 텍스트 렌더링 API가 필요합니다 후 당신이 효과를 달성하기 위해, 나는 FormattedText 클래스 노력 제안 :

은 (WPF) 윈도우 프리젠 테이션 재단에 텍스트를 그리기위한 낮은 수준의 제어를 제공합니다 응용 프로그램.

이 클래스에는 MaxTextHeight 속성이 있습니다. 나는 이것을 시도하지 않았지만 필요한 정보를 줄 기회가 있습니다.

1

TextBlock은 LineHeight 및 LineStackingStrategy의 두 속성을 사용하여 수동으로 높이를 설정합니다. LineHeight를 적용하려면 LineStackingStrategy를 "BlockLineHeight"로 설정해야합니다.

<TextBlock LineHeight="180" LineStackingStrategy="BlockLineHeight" Text="0" FontSize="200"/>