rem*_*rem 41 wpf performance user-interface rendering
如果WPF应用程序的屏幕包含许多原始控件,则其呈现会变得迟缓.在这种情况下,除了添加更少的控件和使用更强大的视频卡之外,有哪些建议的方法可以提高WPF应用程序的响应能力?
有没有办法以某种方式使用屏幕外缓冲或类似的东西?
Ale*_*hik 50
我们的团队面临着渲染性能的问题.在我们的例子中,我们有大约400个运输单元,我们应该渲染每个单元的图表,其中包含许多细节(文本标签,特殊标记,不同的几何形状等).
在我们的实现中,我们将每个图表拆分为基元,并通过Binding组成整个单元的图表.这是非常伤心的事.UI反应非常缓慢.
因此我们决定为每个单元创建一个 UI元素,并使用DrawingContext渲染图表.虽然这在性能方面要好得多,但我们花了大约一个月的时间来改进渲染.
一些建议:
RenderTools和TextCache.每个单元的渲染过程地址到两个类的共享实例.因此,如果两个图表具有相同的文本,它的准备只执行一次.)Freezable,如果您打算长时间使用它.特别是几何形状.复杂的解冻几何执行HitTest极其缓慢.DrawingContext.DrawGlyphs.当然,这种方式需要一些投资,这是枯燥乏味的工作,但结果很棒.
顺便说一句:当我们打开WPF缓存选项(你可以在答案中找到链接)时,我们的应用程序挂断了.
自从一年以来,我在定制数据网格方面遇到了同样的问题,我的结论是:
你基本上没什么可以做的(不影响你的app,即:控制较少或仅使用默认样式)
Jens提到的链接很棒但在你的情况下没用.
NVM提供的"优化WPF应用程序性能"链接在我的经验中几乎同样无用:它只是吸引常识,我相信你不会学习任何非凡的阅读.除了一件事可能:我必须说这个链接教会我尽可能多地放在我的应用程序资源中.因为WPF不会重新放入您放入资源的任何内容,所以它只是一遍又一遍地重用相同的资源.所以尽可能多地放在那里(样式,画笔,模板,字体......)
总而言之,只是通过检查选项或关闭其他选项,根本无法在WPF中使事情变得更快.你可以祈祷MS在不久的将来重新设计他们的渲染层以优化它,同时,尝试减少对效果,自定义控件等的需求......
| 归档时间: |
|
| 查看次数: |
43839 次 |
| 最近记录: |