2010-03-12 13 views
5

例如一個包裝的TextBlock,如果1有一個文本塊:可以seletively顏色在Silverlight/WPF

「Lorem存有胡蘿蔔,增強回扣,但他們occaecat時間和活力,如勞動力和肥胖DUIS的某種多年來,我會來的,誰將會nostrud鍛鍊,學區勞動,但要aliquip前EA commodo consequat。然而,cupidatat陣痛臨到在慾望的快感批評是一個cillum等dolore麥格納逃離不產生任何結果。Excepteur他們是黑人cupidatat不excepteur,必須遵守的過失魁正式開通了那就是放棄的軟頭腦會發生改變。「

1希望這個文本塊的前10%,使得字體顏色應該是紅色的,其餘的應該是綠色的。

這或許意味着它會上色「Lorem存有胡蘿蔔,西紅柿adipisici」的「N」的一部分。基本上,逐像素的字體顏色,而不是字符,明智的。

另一個重要的行爲是個尊重的包裝,並且如果的文本塊內容50%是彩色的,它應該是指文本的50%,閱讀順序是彩色的,而不是塊的前半部分。

例如,這是一個類似的問題(與正確答案),但對於標籤/文本塊時沒有包裝, Is it possible to seletively color a label in Silverlight?

回答

3

1不相信這是可能的逐像素(至少在沒有測量使用的來自鏈接的問題的技術之一在一行接一行的基礎上的文本)。它可以用一個字符明智的運行對象

<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> 

如果文字是動態的,你需要編寫代碼的文本到兩分分區(並將它們分配到集合TextBlock.Inlines完成),但它不應該太硬來封裝成一個自定義的控制。您可以使用

4

運行,給您的文字分開。在這個意義上,可以修改每次運行的背景下,這樣的...

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

據我所知,沒有支持沒有內置這種情況。在WPF,1指望你不得不編寫自己的TextFormatter。在Silverlight中,你可能需要做一些可怕的喜歡渲染到內存中的位圖和圖像處理用找到改變像素,然後在屏幕上繪製位圖。 Eugh。

相關問題