none
如何实现多彩文本? RRS feed

  • 问题

  • 要在一个Textblock或者一个Canvas或者其他的一个什么控件所标识的区域中显示1000个左右的字符(包括英文和中文),每个字符都有自己的前景色和背景色,该如何实现?
    2011年7月26日 9:21

答案

  • 哈哈,Jake这段代码肯定不是在VS里面写的吧?Run标记根本没有Background属性呀~~


    我的做法是错的,只是用Run实现不了这个需求。需要一堆TextBlock,我想能否能用XNA实现这个需求呢,或者把一堆TextBlock写到一个WritableBitmap中。
    Jake Lin
    2011年8月2日 0:41

全部回复

  • 可以使用RUN标签来实现。
    <TextBlock 
     Name="textBlock"
    >
     <Run Background="LightGreen">Text run 1.</Run>
     <LineBreak/><Run Background="LightBlue">Text run 2.</Run>
     <LineBreak/><Run Background="LightYellow">Text run 3.</Run>
    </TextBlock>
    
    


    Jake Lin
    2011年7月26日 12:28
  • 我想这个不是我需要的答案。

    我需要实现的程序要显示的文本以及各个字符的颜色都是不确定的。需要C#的代码动态生成。但C#中Run是没有background这个属性的。

    并且Run无法使用自定义中文字体

    2011年7月27日 5:09
  • 我想这个不是我需要的答案。

    我需要实现的程序要显示的文本以及各个字符的颜色都是不确定的。需要C#的代码动态生成。但C#中Run是没有background这个属性的。

    并且Run无法使用自定义中文字体

    试一下使用stackpanel来放textblock,这个可能很恶心,但是应该可以解决这个问题。如果有换行,可以stackpanel放stackpanel。
    Jake Lin
    2011年7月27日 6:38
  • 确实比较恶心,很难想象上千个stackpanel堆在一起是什么样啊

    2011年7月27日 8:29
  • 哈哈,Jake这段代码肯定不是在VS里面写的吧?Run标记根本没有Background属性呀~~


    2011年8月1日 9:21
    版主
  • 这个目前实现起来的确比较困难~~~
    如果一定实现,可以尝试转成HTML,然后嵌套一个WebBrowser显示~~

    或者等等Mango中的RichTextBox吧~~


    2011年8月1日 9:29
    版主
  • 哈哈,Jake这段代码肯定不是在VS里面写的吧?Run标记根本没有Background属性呀~~


    我的做法是错的,只是用Run实现不了这个需求。需要一堆TextBlock,我想能否能用XNA实现这个需求呢,或者把一堆TextBlock写到一个WritableBitmap中。
    Jake Lin
    2011年8月2日 0:41
  • 请参考Silverlight Toolkit for Windows Phone,其中的PhoneTextBox源代码也许可以给您启发解决当前的问题。

    Windows Phone Toolkit - August 2011 (7.1 SDK)

     

    What's new in August 2011?

    New Components for Aug 2011

    • PhoneTextBox

    Cedar
    2011年9月28日 6:58
    版主