WPF如何优化布局/渲染周期?

11

WPF 如何优化在高度变化的应用程序中的布局/渲染循环?

例如,假设我快速地两次使自定义控件失效(invalidate),它会重绘两次吗?当数据/属性更新频率比主要渲染频率更快时是否存在性能问题?

1个回答

7
基于我的经验,我可以说如果速度够快,IT技术不会渲染两次。
虽然我不能百分之百确定,但我认为原因如下:
我们有一个非常复杂的应用程序(数千个控件),这是一个飞机驾驶舱,全部使用wpf实现,每个按钮、开关和屏幕都可以通过手势或鼠标移动。
驾驶舱大小为10,000像素乘以10,000像素,并实现了放大/缩小功能(通过鼠标滚轮)和右键点击时的平移。
在优化之前,应用程序非常卡顿、缓慢,因此每个“缩放”步骤或“平移”步骤需要约1秒钟。
如果我进行1次缩放(例如,缩放*1.2),它需要1秒钟。
如果我缩放10次(缩放*1.2 X 10),它不会花费10秒钟,而是根据您滚动的速度可能只需2秒钟,并且不会渲染每个“缩放步骤”,只会渲染最后一个...

哇……10k x 10k……带缩放和成千上万的控件……那可真是一个非常牛逼的用户界面。 - Federico Berasategui
这个驾驶舱仅用于基础培训,让学生在没有真实驾驶舱的情况下“进入”驾驶舱,在老师解释面板、解释哪个按钮做什么时使用,它不用于完整的模拟。 - mlemay
很有趣,我本以为控件绑定的属性更新速度会比1秒快得多。当渲染整个屏幕时,如果没有属性更新和常规属性更新(即每秒几次)之间有明显差异,我会很感兴趣。 - Meirion Hughes
1
@mlemay 你是如何进行优化的? - Dai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接