c#中的实时绘图

时间:2011-02-10 16:00:18

标签: c# windows-mobile graph

我试图在使用c#和windows mobile 5通过蓝牙串口实时收集的PDA上绘制数据。我无法以一种看似平滑的方式绘制数据。我已经尝试从一系列点中绘制一条线,但它只能显示离散的数据块。我在这个论坛上找到了一个类似的解决方案,参考了心电图数据,这也有效,但它再次显示了一些数据,然后非常明显地刷新。我已经尝试将点绘制到位图上然后绘制位图以使其更平滑但是再次它不够快。

我想最终得到的东西就像Windows任务管理器中的CPU使用历史图一样。数据点从绘图的右侧开始,并平滑地向左移动。有这样一个问题的标准方法吗?如果这个问题有点模糊,我很抱歉,但如果这是一个众所周知的一般解决方案的问题,我不想花很多时间尝试不同的事情。

1 个答案:

答案 0 :(得分:1)

这取决于您希望它如何在视觉上工作。任务管理器中的CPU使用率从右向左滚动整个图表,并且它完全没有平滑。大约每秒刷新一次(对我而言)它是令人耳目一新的,当它刷新时,整个图表就会“颠簸”到一边。

我作为测试在1.0天内在CF中做了一些事情,我选择让图表保持静止并且数据线从左到右连续绘制,当它到达右边缘时,它会再次开始绘制回到左边,删除最老的图表数据(就像ECG一样)。

对于那种情况,你的位图基本保持不变,所以你不应该重绘整个事物。我通过使用一个基本上是“垂直带”或矩形图表高度的剪裁树干来做到这一点,但只有10px宽。我用更新的轴值重新绘制了该带,因此实际重绘的唯一位是小带。一旦我回到图表的开头,它还有一个额外的好处就是可以“擦除”最旧的数据。