2012-01-09 82 views
6

目前,如果我有一個字體大小爲200的<TextBlock>元素,整個元素佔用的空間比需要的多得多。最小化文本塊的大小

Wasted Space

藍色輪廓(從混合)表示的空間中的元件佔據,需要容易的一半時。無論如何,我可以消除這樣的空間,使我的元素不會太多?我試過保證金,填充等,但大多數方法似乎並沒有工作。

Ideal

理想我想的<textblock>佔用僅由紅色框

編輯表示的空間量:

With Lower Cased Letters

針對stijn7,一些空間確實用於其他字母(g,p,q等)。然而,頂部還有很多空間(1是Segoe UI中最高的角色)。如果裁剪文本塊是不可能的,是否有反正我可以調整它,使沒有浪費的空間?

+2

也許是這樣,因爲其他角色需要這個空間?儘管如此,有趣的問題。 – stijn 2012-01-09 08:52:37

+0

頂部空間是用於各種語言的特殊字符,如^和'。如果你看看角色地圖中的Segoe,你可以看到這些。 – dex3703 2013-02-13 23:20:38

回答

1

這裏的問題在於TextBlock的高度合併了ascender and descender以便渲染具有高度範圍的字符。您選擇的字符恰好跨越字體x-height,但不超出。爲了實現你的效果後,你將需要一個稍低的文本渲染API,我會建議您嘗試FormattedText類:

提供低級別控制在Windows演示 基金會繪製文本(WPF)應用。

此課程有MaxTextHeight屬性。我沒有試過這個,但是它有可能會給你提供你需要的信息。

1

TextBlock公開了兩個屬性,LineHeight和LineStackingStrategy來手動設置高度。請注意,您必須將LineStackingStrategy設置爲「BlockLineHeight」才能使LineHeight生效。

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