VC++大数据量绘图时无闪烁刷屏技术实现(4)
for(int i=0;i<m_DX;i++)
DrawPoint(value[i],RGB(0,255,0));
dc.SelectObject(pOldBitmap);
ReleaseDC(pDC);
}
if(nIDEvent==1)
{
m_dx+=2;
for(int i=0;i<m_DX;i++)
{
value[i].x=i;
if(m_dx+i<0)
buffer[m_dx+i]=128;
if(m_dx+i<-m_DX)
m_dx-=2;
if(m_dx+i>m_BufLen)
buffer[m_dx+i]=128;
if(m_dx+i>m_BufLen+m_DX)
m_dx-=2;
value[i].y=m_DY*(buffer[m_dx+i]-128)/256;
}
}
CFormView::OnTimer(nIDEvent);
}
虽然通过上述几步可以实现所有的功能,但为了防止内存泄露和养成良好的编程习惯,我们还须做些工作,在视类的构造函数中释放我们曾经申请过的内存以及定时器:
CWaveShowerView::~CWaveShowerView()
{
delete[] value;
KillTimer(0);
KillTimer(1);
}
小结
编译运行此程序,通过菜单选取需要显示的文件(任意文件均可),如在定时器响应代码中采用的是第一种代码,则会看到数据显示的同时伴随着明显的闪烁而采用后一种代码编码则会很平稳的将数据显示出来。本文介绍的这种方法适用于各种牵扯到数组数据图形显示的程序,比如监控软件、数据分析软件、测量软件等等,具有广泛的应用前景。本文所述程度代码在Windows 2000 Professional + SP4下由Microsoft Visual C++ 6.0编译通过。
- 上一篇:VC中利用原始套接字实现网络监听
- 下一篇:最常见的20种VC++编译错误信息