Necesito mostrar las palabras en un lienzo de WPF de forma que quepan perfectamente en cuadros predefinidos.Renderizar texto en WPF para que se ajuste perfectamente a un rectángulo determinado
Una caja generalmente contiene una sola línea de texto, de una letra a unas pocas palabras.
El texto dentro de una casilla debe ser lo más grande posible, es decir, tocar todos los bordes de la caja (excepto tal vez porque causaría demasiada distorsión de texto debido a una proporción anormal de caja/altura).
No pude encontrar una buena manera de calcular la altura, escala y compensación de fuente adecuadas, según el contenido del texto.
¡Una primera solución en la que la relación de ancho/alto del texto original no se puede cambiar ya sería muy agradable!
Me gustaría utilizar elementos TextBlock, pero cualquier otra cosa que funcione debería estar bien.
¡Gracias! Lo probé y funciona bastante bien. Mientras tanto, encontré una solución alternativa: medir los elementos de texto a través de un objeto FormattedText temporal (gracias a las propiedades "Ancho", "Extensión" y "Extender después"), luego aplicar un Scale + TranslateTransform a cada elemento en consecuencia. Sin embargo, tiene dos desventajas: los bloques de texto reales se vuelven demasiado grandes (desordenar la información sobre herramientas) y el renderizado no es tan rápido como me gustaría. – Jem
@Jem: No hay problema :) ¿Cómo fue el tiempo de renderizado entre nuestras soluciones? ¿Fue "lento" en ambos casos? Intenté con 10 o más 'StretchText' simultáneamente en una' Grilla' y luego redimensioné la 'Ventana' rápidamente. Parecía que funcionaba muy bien, pero 'DrawGeometry' es conocido por ser bastante lento –
el número de palabras para mostrar es de aproximadamente uno o dos mil, pero cambiar el tamaño de la página es lo suficientemente suave con su solución. Yo diría que es aproximadamente 3 veces más rápido que el mío, y es estable (sin "retrasos").Sin embargo, la calidad del texto no es tan nítida para textos pequeños (probablemente porque ya no es "texto", sino "geometría"), pero es lo suficientemente bueno. Idealmente, me gustaría obtener un mejor rendimiento y la mejor calidad de texto posible, pero su solución es el mejor compromiso por el momento. – Jem