不停有一对(x,y)值通过串口发到计算机里,大概40毫秒发送一组数据,得到这个值就马上在屏幕上画一个点,或一个圆圈,保持最后的30个,显示这一部分怎么实现?

解决方案 »

  1.   

    http://www.codeproject.com/miscctrl/oscope.asp
      

  2.   

    保持最后的30个,这便涉及到前面点的擦除问题,如果想要效率比较高的话,可以会很复杂,但如果只是重画30个点那会简单的多。你可以用一个CArray<CPoint, CPoint>m_ArrPoints;
    每增加一个点的时候,用m_ArrPoints.Add(CPoint(x,y));加入,并判断是否大于30个,若大于就删除第一个点好了if(m_ArrPoints.GetUpperBound() >30) m_ArrPoints.RemoveAt(0);
    之后你只需重载WM_DRAW或WM_PAINT把这些点画出来就好了(画之前用背景填充整个客户区,完成擦除的工作)。
    不知以上说法对你是否有帮助,我的目的就是互相学习,共同进步,如果你有什么更好的方法,结帖时别忘了告诉大家。