读书人

绘制波形耗时惊人解决思路

发布时间: 2012-04-14 17:14:21 作者: rapoo

绘制波形耗时惊人
经实测,20074个点组成的波形,仅仅在内存DC上画好就要消耗22.006毫秒,请问高手如何解决!
dcMem.MoveTo(m_dcx[0],m_dcy[0]);
int k;
for(k=1;k<size;k++)
dcMem.LineTo(m_dcx[k],m_dcy[k]);

[解决办法]
没有好办法,只有减少全部重绘的次数
[解决办法]
数据产生的频率是多少?一秒几个点?
http://blog.csdn.net/xianglitian/article/details/6100767
http://topic.csdn.net/u/20110901/10/552151a6-bd04-47b2-9b27-fadc3f624688.html
[解决办法]
1.看你是实时显示,还是一次性显示了。
2.看你接收数据的时间。
基于以上两点:
1.如果时间长且实时显示,可以接一个往图上画一个,等到接收完画剩余的点,就感觉时间没那么长了
2.如果接收时间又短,还要实时话,可能来不及,那就多线程画
3.如1楼所说,减少重绘次数,比如说10个点求平均值(各种滤波方法都可以考虑),然后当一个点画(只重绘2008次),这样数据不仅稳定了而且速度也快了
[解决办法]
不用做到实时显示,当数据量太大时,可以间隔数个点进行绘制。

[解决办法]
1、两万个点的波形所包含的信息无法在屏幕上全部体现出来,使用一些算法减少绘制的线段数,也可以达到和全部绘制一样的效果
2、使用Polyline(),一次可以绘制很多线段

读书人网 >VC/MFC

热点推荐