比较来自世界各地的卖家的域名和 IT 服务价格

提高用户界面渲染速度的方法 WPF

如果应用程序屏幕 WPF 包含许多原始控件,其渲染变得缓慢。 提高应用程序性能的建议方法是什么? WPF 在这种情况下,除了添加较少数量的控制和使用更强大的视频卡之外还是什么?

有没有办法以某种方式使用喷水缓冲或类似的东西?
已邀请:

君笑尘

赞同来自:

我们的团队面临呈现性能问题。 在我们的案件中我们有关于 400 运输单位,我们必须用大量零件可视化每个单元的方案 /文本标签,特殊标签,各种几何等。/.

在第一个实现中,我们在原语上打破了每个图表,并使用绑定进行了整个块的图。 这是一个非常悲伤的经历。 UI 反应极慢。

所以我们决定创造



元素 UI 对于每个单位并与图表可视化 DrawingContext. 虽然在生产力方面都更好,但我们花了大约一个月的时间来改善渲染。

几个提示:

保持一切。 刷子,颜色,几何,格式化文本,字形。 /例如,我们有两个课程:
RenderTools


TextCache

. 每个块的渲染过程吸引了两个类的总实例。 因此,如果两个图形具有相同的文本,则其准备仅执行一次。/

冻结
Freezable

, 如果您计划长期使用它。 特别是几何形状。 复杂的冰冻几何是执行的 HitTest 非常慢。

选择每个原始的最快呈现方法。 例如,有关于 6 渲染文本的方式,但最快
DrawingContext.DrawGlyphs

.

使用分析器来检测热点。 例如,在我们的项目中,我们有一个几何缓存,我们按需执行相应的缓存。 似乎没有改进。 但是一旦我们想到了:如果我们想象一下几何,那么怎么并缓存就绪的视觉效果? 在我们的情况下,这种方法是可以接受的。 在我们司的地图上只有一些州。 当这些图表发生变化时,我们重建 DrawingVisual 对于每个状态并将它们放入缓存中。

当然,这条路径需要某些投资,这是无聊和无聊的工作,但结果很棒。

顺便说一下:当我们打开缓存选项时 WPF /链接您可以在答案中找到/, 我们的申请挂了。

窦买办

赞同来自:

我有同样的问题 perf 强烈配置 datagrid 从一年开始,我的结论是:

原则上,你不能做任何事情
从我身边 /不影响你的
应用程序,即较少的控件或
仅使用默认样式/

Jens提到的参考是华丽的,但在您的情况下无用。

关联 "Optimizing WPF Application Performance", 假如 NVM, 在我的经历中几乎相同是无用的:她只是呼吁常识,我相信你也不认识任何非凡的阅读。

除了一个,也许

是 : 我不得不说这个链接告诉我在我的申请资源中尽可能地投资。 只要 WPF 它不会恢复您在资源中投入的任何东西,它只是一次又一次地重用相同的资源。 所以要尽可能多地 /款式,画笔,图案,字体....../

一般来说,在 WPF 通过简单地检查一个选项或禁用另一个,根本无法加快过程。 你可以祈祷 MS 在不久的将来回收渲染层以优化它,同时尝试减少对效果,可自定义控制元素等的需求......

喜特乐

赞同来自:

看看新的缓存选项 /.NET 4.0/. /厘米。
http://msdn.microsoft.com/libr ... .aspx
./

要回复问题请先登录注册