2012-01-09 14 views
6

Obecnie, jeśli mam element <TextBlock> z krojem czcionki 200, cały element zajmuje znacznie więcej miejsca niż jest to konieczne.Minimalizuj rozmiar bloku tekstowego

Wasted Space

niebieski kontur (z mieszaniny) pokazuje przestrzeń element zajmuje, gdy potrzebna jest łatwo połowa tego. Czy mimo to mogę wyeliminować tę przestrzeń tak, że moje elementy nie są tak oddalone? Próbowałem marży, padding itp., Ale większość metod nie działa.

Ideal

Idealnie byłoby chcę <textblock> podjąć tylko ilość miejsca wskazanego przez czerwone pole

Edit:

With Lower Cased Letters

W odpowiedzi na stijn7, niektóre miejsca są rzeczywiście zarezerwowane dla innych liter (g, p, q itp.). Na górze wciąż jest dużo miejsca (1 to najwyższa postać w Segoe UI). Jeśli przycinanie bloku tekstu nie jest możliwe, czy istnieje możliwość zmiany jego rozmiaru w taki sposób, że nie ma zmarnowanej przestrzeni?

+2

Może to tak, ponieważ inne postacie potrzebują tej przestrzeni? ciekawe pytanie. – stijn

+0

Górna spacja jest przeznaczona dla znaków specjalnych, takich jak^i ', w różnych językach. Jeśli spojrzysz na Segoe na mapie postaci, możesz je zobaczyć. – dex3703

Odpowiedz

1

Problem polega na tym, że TextBlock ma wysokość zawierającą ascender and descender w celu renderowania znaków o zakresie wysokości. Postać, którą wybrałeś, rozciąga się na czcionkę x-height, ale nie poza nią. W celu osiągnięcia efektu jesteś po trzeba będzie nieznacznie niższy poziom renderowania tekstu API, proponuję próbuje klasę FormattedText:

Zapewnia kontrolę niskopoziomowe do rysowania tekstu w prezentacji Fundacji systemu Windows (WPF) Aplikacje.

Ta klasa ma właściwość MaxTextHeight. Nie próbowałem tego, ale jest szansa, że ​​dostarczy ci potrzebnych informacji.

1

Moduł TextBlock udostępnia dwie właściwości: LineHeight i LineStackingStrategy, aby ręcznie ustawić wysokość. Zauważ, że musisz ustawić LineStackingStrategy na "BlockLineHeight", aby LineHeight odniosła skutek.

<TextBlock LineHeight="180" LineStackingStrategy="BlockLineHeight" Text="0" FontSize="200"/> 
Powiązane problemy