2012-01-09 10 views
6

Actualmente, si tengo un elemento <TextBlock> con tamaño de fuente 200, todo el elemento ocupa mucho más espacio de lo necesario.Minimizar tamaño de bloque de texto

Wasted Space

El contorno azul (de mezcla) muestra el espacio que el elemento de toma, cuando se necesita fácilmente la mitad de eso. ¿De todos modos puedo eliminar ese espacio de manera que mis elementos no estén tan espaciados? He intentado con margen, relleno, etc. pero la mayoría de los métodos no parecen funcionar.

Ideal

Lo ideal sería deseable que la <textblock> para ocupar sólo la cantidad de espacio indicado por el cuadro rojo

Editar:

With Lower Cased Letters

En respuesta a stijn7, cierto espacio está de hecho reservado para otras letras (g, p, q, etc.). Sin embargo, todavía hay mucho espacio en la parte superior (1 es el personaje más alto en la interfaz de usuario de Segoe). Si no puedo recortar el bloque de texto, ¿puedo cambiar el tamaño de tal forma que no haya espacio perdido?

+2

tal vez es así porque otros personajes necesitan ese espacio? pregunta interesante, sin embargo. – stijn

+0

El espacio superior es para caracteres especiales, como^y ', en varios idiomas. Si miras a Segoe en el Mapa de caracteres, puedes verlos. – dex3703

Respuesta

1

El problema aquí es que TextBlock tiene la altura que incorpora el ascender and descender para representar caracteres con un rango de alturas. El personaje que ha elegido pasa a abarcar la fuente x-height, pero no más allá. Con el fin de lograr el efecto deseado se necesita un nivel de API de procesamiento de texto ligeramente inferior, sugeriría probar la clase FormattedText:

Proporciona control de bajo nivel para dibujar texto en Windows Presentation Foundation (WPF) aplicaciones.

Esta clase tiene una propiedad MaxTextHeight. No he intentado esto, pero existe la posibilidad de que le proporcione la información que necesita.

1

TextBlock expone dos propiedades, LineHeight y LineStackingStrategy para establecer manualmente la altura. Tenga en cuenta que debe establecer LineStackingStrategy en "BlockLineHeight" para que LineHeight surta efecto.

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