Pregunta

¿Hay alguna forma en XAML de agregar relleno alrededor de caracteres individuales? Preferiblemente antes y después del personaje.

Tengo un cuadro de texto en el que me gustaría que la entrada se separe un poco más (por lo que se alinea con una imagen de fondo). Sería ideal poder hacer algo como:

¿Alguna idea de cómo se puede lograr esto?

Parece que uno puede hacer esto en MS-Word (detalles aquí ), ¿entonces eso significa que es posible en XAML?

¿Fue útil?

Solución

Es posible ajustar el espaciado entre caracteres en XAML utilizando Glyphs , específicamente Índices propiedad. Esta es una API de texto de nivel bastante bajo, por lo que debe especificar el URI de la fuente (en lugar del nombre de la familia) y debe calcular todos los espacios usted mismo.

El siguiente XAML usa Glyph.Indices para aplicar el espaciado entre caracteres:

<Glyphs UnicodeString="Expanded" Indices=",100;,100;,100;,100;,100;,100;,100"
    FontUri="file://c:/windows/fonts/arial.ttf"
    Fill="Black" FontRenderingEmSize="24" />
<Glyphs UnicodeString="Normal"
    FontUri="file://c:/windows/fonts/arial.ttf"
    Fill="Black" FontRenderingEmSize="24" />
<Glyphs UnicodeString="Condensed" Indices=",60;,50;,50;,50;,45;,50;,40;,45"
    FontUri="file://c:/windows/fonts/arial.ttf"
    Fill="Black" FontRenderingEmSize="24" />

Como documentado aquí , la propiedad Indices contiene una lista delimitada por punto y coma de chr,off pares. chr es el índice del glifo dentro de la fuente; si se omite, WPF usará el glifo correspondiente al carácter actual en UnicodeString. off es el espacio entre este glifo y el siguiente; 0 muestra los dos uno encima del otro, cualquier valor positivo aumenta el espacio. El & Quot; normal & Quot; el espaciado dependerá de la fuente que esté usando; como puede ver en " Condensed " ejemplo, usé un espaciado diferente para diferentes pares de caracteres para que la salida se vea mejor.

Claramente, esto solo se aplica al texto estático que está mostrando y no a la información que se recopila del usuario (en un TextBox); No conozco ninguna forma de ajustar el espacio entre caracteres en & Quot; standard & Quot; objetos de texto (TextBlock, Run, <=>, etc.), entonces quizás la respuesta sea " No, no hay una forma de hacer esto en XAML ".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top