2010-03-12 11 views
5

Por ejemplo, si un bloque de texto 1 tienen:es posible colorear seletively TextBlock envoltura en Silverlight/WPF

"zanahorias Lorem Ipsum, rebajas mejoradas, pero lo hacen tiempo occaecat y vitalidad, como el trabajo y la obesidad de algún tipo. con los años, entraré, que nostrud ejercicio, la mano de obra distrito escolar, sino para aliquip ex consequat ea commodo. Duis, sin embargo, cupidatat los dolores a la criticada en el placer del deseo de ser uno cillum et dolore magna huir produce ningún resultante. Excepteur son negros cupidatat no excepteur, sunt en officia culpa qui que es abandonar las mentes blandas cambiarán ".

1 quieren que el primer 10% de este bloque de texto, de manera que el color de la fuente debe ser de color rojo, y el resto debe ser verde.

Esto quiere decir que tal vez sería el color de las zanahorias "ipsum lorem, tomate adipisici" parte de la "n". Básicamente, el color de la fuente de píxel en lugar de caracteres se refiere.

Otro comportamiento importante es que el porcentaje respeta la envoltura, y que si el 50% de los contenidos textblock es de color, que debe significar el 50% del texto en el orden de lectura es de color, y no la primera mitad de la manzana.

Por ejemplo, esta es una pregunta similar (con respuestas correctas), pero en relación con la etiqueta/Textblock sin envoltura, Is it possible to seletively color a label in Silverlight?

Respuesta

3

1 no creen esto es posible de píxel (al menos no sin medir el texto utilizando una de las técnicas de la cuestión vinculada en una base de línea por línea). Se puede hacer uso de un objeto de caracteres Run-sabia

<TextBlock FontSize="24" TextWrapping="Wrap"> 
    <Run Foreground="Red">Lorem ipsum dolor sit amet, consectetur</Run> 
    adipisicing elit, sed do eiusmod tempor incididunt ut labore et 
    dolore magna aliqua. Ut enim ad minim veniam... 
</TextBlock> 

Si el texto es dinámico, que había necesidad de escribir código para dividir el texto en las dos carreras (y asignarlos a los TextBlock.Inlines de recolección), pero no debe ser demasiado difícil de encapsular que en un control personalizado. Puede utilizar

4

carreras, para separar el texto. En ese sentido, se puede modificar el fondo de cada carrera, al igual que ...

<TextBlock> 
     <Run Background="Red"> 
      Republican 
     </Run> 
     <Run Background="Blue"> 
      Democrat 
     </Run> 
    </TextBlock> 
2

Que yo sepa, no hay soporte incorporado para este escenario. El FPM, 1 esperaría que tendría que escribir su propio TextFormatter. En Silverlight, es posible que tenga que hacer algo horrible como la representación de un mapa de bits en la memoria y la manipulación de imágenes utilizando para encontrar los píxeles para cambiar y luego dibujar el mapa de bits en la pantalla. Eugh.