2012-01-09 2 views
6

В настоящее время, если у меня есть элемент <TextBlock> с размером шрифта 200, весь элемент занимает гораздо больше места, чем необходимо.Свернуть размер текстового блока

Wasted Space

Синий контур (из смеси) показывает пространство элемент занимает, когда легко половина, что нужно. В любом случае я могу устранить это пространство, чтобы мои элементы не были настолько разнесены? Я пробовал маржу, заполнение и т. Д., Но большинство методов, похоже, не работают.

Ideal

В идеале я хотел бы, чтобы <textblock> занять только объем пространства, обозначенную красным квадратом

Edit:

With Lower Cased Letters

В ответ на stijn7, некоторое пространство действительно зарезервировано для других букв (g, p, q и т. д.). Однако в верхней части все еще много места (1 - самый высокий символ в пользовательском интерфейсе Segoe). Если обрезка текстового блока невозможна, все равно я могу изменить его размер так, чтобы не было потраченного впустую пространства?

+2

Возможно, это так, потому что другим символам нужно это пространство? интересный вопрос все же. – stijn

+0

Верхнее пространство предназначено для специальных символов, таких как^и ', на разных языках. Если вы посмотрите на Segoe на Карте символов, вы можете увидеть их. – dex3703

ответ

1

Проблема заключается в том, что TextBlock имеет высоту, которая включает ascender and descender для визуализации символов с диапазоном высот. Выбранный вами персонаж охватывает шрифт x-height, но не за его пределами. Для того, чтобы добиться эффекта вы после этого вам потребуется немного ниже уровня визуализации текста API, я хотел бы предложить пробуя FormattedText класс:

Обеспечивает контроль низкого уровня для рисования текста в ОС Windows Foundation Presentation (WPF) Приложения.

Этот класс имеет MaxTextHeight. Я не пробовал это, но есть шанс, что он предоставит вам необходимую вам информацию.

1

TextBlock предоставляет два свойства LineHeight и LineStackingStrategy для ручной установки высоты. Обратите внимание, что вам необходимо установить LineStackingStrategy на «BlockLineHeight», чтобы LineHeight вступил в силу.

<TextBlock LineHeight="180" LineStackingStrategy="BlockLineHeight" Text="0" FontSize="200"/> 
Смежные вопросы