2012-01-09 19 views
6

Şu anda, font boyutu 200 olan bir <TextBlock> öğem varsa, tüm öğe gereğinden fazla yer kaplıyor.Küçült Küçültme Boyutu

Wasted Space

(Blend itibaren) mavi anahat bunun kolayca yarısı gerektiğinde eleman, kapladığı alanını gösterir. Yine de, o alanı ortadan kaldırabiliyorum, öyle ki, elementlerim çok fazla yer kaplamıyor mu? Kenar boşluğu, dolgu vb. Denedim ama çoğu yöntem işe yaramıyor.

Ideal

İdeal <textblock>

Düzenleme kırmızı kutuyla gösterilen alanının yalnızca miktarda almak isteyeyim: Buna karşılık

With Lower Cased Letters

stijn7 için, Bazı harfler diğer harfler için ayrılmıştır (g, p, q vb.). Ancak yine de üstte çok yer var (1, Segoe UI'deki en yüksek karakter). Eğer textblock'u kesmek mümkün değilse, boşa harcanan alan olmayacak şekilde yeniden boyutlandırabilirmiyim?

+2

belki de böyle oluyor çünkü diğer karakterler bu alana mı gereksinim duyuyor? yine de ilginç bir soru. – stijn

+0

Üst alan, çeşitli dillerde^ve 'gibi özel karakterler içindir. Karakter haritasında Segoe'ye bakarsanız, bunları görebilirsiniz. – dex3703

cevap

1

Buradaki sorun, TextBlock'un yüksekliğe sahip karakter yüksekliğini oluşturmak için yüksekliğin ascender and descender'u içermesidir. Seçtiğiniz karakter, x-height yazı tipini kapsamakta, ancak ötesini aşmamaktadır. Eğer biraz daha düşük seviyeli metin oluşturma API gerekecektir sonra sen etkiyi elde etmek için, ben FormattedText sınıfını denemenizi öneririz olacaktır:

(WPF) Windows Presentation Foundation metni çizmek için düşük seviyeli kontrol sağlar uygulamalar.

Bu sınıf MaxTextHeight özelliğine sahiptir. Bunu denemedim, ancak size gereken bilgileri verebilme şansı var.

1

TextBlock, yüksekliği manuel olarak ayarlamak için iki özelliği, LineHeight ve LineStackingStrategy ortaya çıkarır. LineStackingStrategy'yi, LineHeight'ın etkili olması için "BlockLineHeight" olarak ayarlamanız gerektiğini unutmayın.

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