2012-01-09 3 views
6

現在、フォントサイズ200の<TextBlock>要素がある場合、要素全体が必要以上のスペースを占めます。テキストブロックのサイズを最小化

Wasted Space

(ブレンド)から青のアウトラインは、その簡単に半分が必要なときに要素が、占めるスペースを示しています。とにかく、私の要素があまり間隔をあけないようにそのスペースを排除することができますか?私はマージン、パディングなどを試しましたが、ほとんどのメソッドは動作していないようです。

Ideal

理想的には私は<textblock>が赤いボックスで

編集示さスペースの量だけ取り上げたいと思う:stijn7に応じて

With Lower Cased Letters

を、いくつかのスペースは実際に他の文字(g、p、qなど)のために予約されています。しかし、トップにはまだ多くのスペースがあります(1はSegoe UIの中で最高のキャラクターです)。テキストブロックを切り取ることができない場合、無駄なスペースがないようにサイズを変更できますか?

+2

他のキャラクターがそのスペースを必要としている可能性がありますか?それにもかかわらず興味深い質問です。 – stijn

+0

上部スペースは、^や 'のような特殊文字のためのもので、さまざまな言語です。キャラクターマップでSegoeを見ると、これらを見ることができます。 – dex3703

答えて

1

ここでの問題は、高さの範囲で文字をレンダリングするためにTextBlockの高さがascender and descenderであることです。あなたが選択した文字は、フォントx-heightにまたがっていますが、超えてはなりません。あなたはやや低いレベルのテキスト描画APIが必要になります後、あなたが効果を達成するために、私はFormattedTextクラスを試すことをお勧め:

は、Windows Presentation 財団(WPF)にテキストを描画するための低レベルの制御を提供しますアプリケーション。

このクラスにはMaxTextHeightというプロパティがあります。私はこれを試していないが、必要な情報をあなたに与えるチャンスがある。

1

TextBlockは、LineHeightとLineStackingStrategyの2つのプロパティを公開して、手動で高さを設定します。 LineHeightを有効にするには、LineStackingStrategyを "BlockLineHeight"に設定する必要があります。

<TextBlock LineHeight="180" LineStackingStrategy="BlockLineHeight" Text="0" FontSize="200"/> 
関連する問題