龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC++大数据量绘图时无闪烁刷屏技术实现(4)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
CleanScreen(); for(int i=0;im_DX;i++) DrawPoint(value[i],RGB(0,255,0)); dc.SelectObject(pOldBitmap); ReleaseDC(pDC); } if(nIDEvent==1) { m_dx+=2; for(int i=0;im_DX;i++) { value[i].x=i; if(m_dx+i0) buf
  CleanScreen();
  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编译通过。

精彩图集

赞助商链接