WPF中高性能图表控件

3
我正在做一些需要开发控件的工作,它应该是一个简单的图表,显示几个点和两条边。
我的问题是,我需要显示高达16k个点,并以30赫兹的更新速率进行更新。是否有人做过类似的事情?并有什么建议?
例如,是否继承自FrameworkElement或Control(在此情况下为ItemsControl)。如果控件继承自FrameworkElememt,则可能在OnRender方法中绘制点具有更好的性能,但我会错过从Control继承而来的Templating特性。
还是存在其他可以实现这一点的控件吗?
感谢您事先的时间。

每次更新时,所有点都可能会改变。此外,我需要提供缩放功能,因此需要处理的点的数量也会增加。谢谢。 - Ariel
首先问问自己 - 你真的需要模板吗?如果你为自己的需求开发控件,我认为答案应该是 - 不需要! - stukselbax
你的图形有多稀疏?它是否连通?联通分量的平均大小是多少? - Alex Shtof
3
哦,您可以使用DirectX并将其投影到WPF控件上(完全支持)。对于DirectX来说,渲染包含30,000个点的顶点数组甚至不值一提。现代游戏每秒渲染数亿个完整的三角形。 16,000个点是中等范围的特殊效果 ;) - TomTom
@TomTom,我在这里问了一个关于您建议的问题链接,(将DirectX表面绘制到WPF中),这也可能很有趣。 - Ariel
显示剩余2条评论
2个回答

3
我最终使用了InteropBitmap,它是WPF中最快的位图渲染类。它允许您将要绘制的图像(在内存中)映射,然后将其呈现为图像。这非常完美,因为我需要在屏幕上绘制点。我获得了出色的性能(近50Hz的20k点),我还使用PLINQ来更新内存中的点。有关更多详细信息,请查看文章...

你好,链接显示403错误。你能提供更多信息或其他链接吗?我正在一个项目中工作,遇到了同样的问题。 - alecardv

2

尝试阅读关于ZoomableCanvas的文章。我相信它可以解决您的问题。您可以在ZoomableCanvas内部将所有点呈现为小矩形/椭圆。


你尝试过那个控件吗?因为我最需要的是性能。谢谢。 - Ariel
是的,前段时间。他还有一些演示可以编译并观看它们的工作。 - Alex Shtof

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