【发布时间】:2013-01-25 23:19:41
【问题描述】:
我有一个包含一条折线的 PathGeometry,并以固定的间隔向该线添加一个新点(以绘制波形)。使用 Perforator 工具时,我可以看到每次向线条添加一个点时,WPF 都会将整个 PathGeometry 标记为“脏”,从而导致重新渲染整个形状。
我希望它只会重绘单个像素。有没有办法做到这一点?
【问题讨论】:
-
您真的遇到了性能问题吗?折线有多少个点?
-
@Clemens 我只是在做一个可行性研究来决定该绘图仪应用程序(Winforms/D3D/WPF)使用哪种技术,所以我还没有遇到性能问题,因为我是用一行测试,但最终的应用程序将有更多的行。它必须重绘屏幕的大部分而不是单个像素,这让我很担心。
-
那你不应该停留在Path/PathGeometry,还要考虑低级渲染。看看WPF Graphics Rendering Overview 文章。此外,通过WriteableBitmap 进行渲染可能值得一看。
-
话虽如此,您还应该研究一个真实世界的例子。用多条线进行渲染并评估实际性能。 WPF 渲染受益于硬件加速,这可能使其性能比 WinForms 高得多,即使它经常需要重绘整个可视层。你也可以看看Optimizing WPF Application Performance。
标签: wpf performance profiling rendering hardware-acceleration