【问题标题】:WPF/Silverlight: Instantly render large amounts of multi-colored textWPF/Silverlight:即时渲染大量多色文本
【发布时间】:2009-12-18 15:25:58
【问题描述】:

我需要在 WPF 或 Silverlight 中不断显示大量彩色文本,并且我需要用户感觉到它会立即显示。

目前我正在使用画布和文本块来执行此操作,每 80 个字符的行一个文本块,多次运行到一个文本块以处理不同的颜色。一条线通常可以运行 20 次以上。

在 45x80 的文本网格中,Silverlight 的帧速率约为 12,这是缓慢的。奇怪的是,它在 WPF 中甚至更慢......我只能推测这与我的开发机器糟糕的视频卡有关。也许它正在尝试硬件加速并因此而减速?

所以,我的问题是:有没有更好的方法来做到这一点?

【问题讨论】:

    标签: c# wpf vb.net silverlight


    【解决方案1】:

    最好的方法是将文本预渲染到位图,缓存位图,然后将其 blit 到显示器。帧率会上升很多。

    【讨论】:

    • 谢谢,您能否为我指明如何开始的正确方向?
    • 您可能需要进行一些试验才能确定最佳缓存策略是什么,如果您要显示大量文本组合,这将非常复杂,但基本原则是创建一个 FormattedText 对象,然后将其渲染到 RenderTargetBitmap 并存储位图以供稍后显示。要完成这最后一步,有两种基本方法:使用 Visual 包含位图,然后通过容器(如 Canvas)将 Visual 添加到可视化树中,或者使用 WritableBitmap 直接将缓存的位图 blit 到。后一种方法会更快。
    • +1 WriteableBitmap 是去这里的好方法。至于缓存,我不会担心,至少从一开始就是这样。
    • @Anvaka - 但如果他不保留他渲染的位图,他将不得不重新渲染文本,放弃不必每次都渲染它的性能优势。
    • 我假设通过缓存你们只是在谈论在内存中保存对位图的引用,对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多