2010-03-06 10 views
5

Per esempio, se ho un etichetta:È possibile colorare selettivamente un'etichetta in Silverlight?

Blah blah bladity blah

voglio il primo 10% di questa etichetta, in modo che il colore del font dovrebbe essere rosso, e il resto dovrebbe essere verde.

Questo forse significa che colorerebbe il BL e PARTE del a. In pratica, la colorazione dei font è pixel-wise anziché di carattere. È possibile e come si farebbe?

risposta

5

Sì, sarebbe come questo:

<Canvas> 
    <dataInput:Label Background="White" > 
    <dataInput:Label.Foreground> 
     <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5"> 
      <GradientStop Color="Red" Offset="0.1"/> 
      <GradientStop Color="Green" Offset="0.1"/> 
     </LinearGradientBrush> 
    </dataInput:Label.Foreground> 
    Blah blah bladity blah 
    </dataInput:Label> 
</Canvas> 

Per non hanno l'effetto gradiente, è necessario impostare sia Offset allo stesso valore.

Nota: In questa dimensione del carattere (standard, nulla è cambiato), "B" e "l" sono rossi e solo un piccolo frammento di "a" è. Ma lo "0,1" in Offset significa il 10%, quindi è possibile ridurre la dimensione del carattere o modificare il valore Offset.

+0

Sembra che entrambi abbiamo trovato la stessa soluzione! –

+0

+1 Nice use of dataInput: controllo dell'etichetta. –

3

Sì: è necessario utilizzare un pennello Sfumatura con il colore di primo piano del testo.

<TextBlock Text="Blah blah bladity blah"> 
    <TextBlock.Foreground> 
     <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5"> 
     <GradientStop Color="Red" Offset="0.1"/> 
     <GradientStop Color="Green" Offset="0.1"/> 
     </LinearGradientBrush> 
    </TextBlock.Foreground> 
</TextBlock> 
Problemi correlati