我正在尝试在使用c#和Windows Mobile 5通过蓝牙串行端口实时收集的PDA上绘制数据。在以平滑的方式绘制数据时遇到了麻烦。我尝试从点数组中绘制一条线,这些线虽然有效,但实际上只能显示离散的数据块。我在这个论坛上找到了一个有关ECG数据的类似解决方案,该解决方案也有效,但再次显示了一些数据,然后进行了非常明显的刷新。我尝试将点绘制到位图上,然后绘制位图以使其更平滑,但又不够快。
我最后想要的是行为类似于Windows任务管理器中的CPU使用率历史记录的图形。数据点始于图的右侧,并平稳地向左移动。是否有解决此类问题的标准方法?如果问题有点含糊,我深表歉意,但是如果众所周知的通用解决方案存在问题,我不想花很多时间尝试其他事情。
最佳答案
它取决于您希望它如何在视觉上工作。任务管理器中的CPU使用率从右向左滚动整个图表,并且一点都不平滑。它每秒刷新一次(无论如何对我来说),当刷新时,整个图表都“颠簸”到一边。
作为测试,我在1.0天的CF中做了一些测试,我选择使图表保持静态,并连续从左到右绘制数据线,当到达右边缘时,它将开始再次在图表上进行绘制。向左移动,删除最旧的图表数据(如ECG一样)。
对于这种情况,您的位图基本上保持不变,因此您不应该重新绘制整个图。我通过使用剪裁电阻来实现此目的,剪裁电阻基本上是图表高度的“垂直带”或矩形,但宽度只有10px。我用更新的轴值重新绘制了该波段,所以实际上重绘的唯一位是那个小波段。一旦回绕到图表的开头,它还有一个好处,即可以对最旧的数据进行可见的“擦除”。