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

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

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
然后在视类中添加函数GetScreenRect()用以获取数据显示区的大小及其他参数;添加函数CleanScreen()完成清除数据显示区的功能;添加函数DrawPoint()以便在数据显

  然后在视类中添加函数GetScreenRect()用以获取数据显示区的大小及其他参数;添加函数CleanScreen()完成清除数据显示区的功能;添加函数DrawPoint()以便在数据显示区画点:

void CWaveShowerView::GetScreenRect()
{
 CWnd* pStatic = GetDlgItem(IDC_SCREEN);
 pStatic->GetWindowRect(&rect);
 ScreenToClient(&rect);
 rect.top+=4;
 rect.left+=4;
 rect.bottom-=4;
 rect.right-=4;
 m_Y0=(rect.bottom-rect.top)/2+rect.top;
 m_DX=rect.Width();
 m_DY=rect.Height()/2;
 value=new CPoint[m_DX];
}
void CWaveShowerView::CleanScreen()
{
 CDC* pDC=GetDC();
 CPen pen1(PS_SOLID,1,RGB(0,0,0));
 CPen* oldPen1=pDC->SelectObject(&pen1);
 for(int i=rect.top;i<rect.bottom;i++)
 {
  pDC->MoveTo(rect.left,i);
  pDC->LineTo(rect.right,i);
 }
 pDC->SelectObject(&oldPen1);
 CPen pen2(PS_SOLID,1,RGB(0,0,255));
 CPen* oldPen2=pDC->SelectObject(&pen2);
 pDC->MoveTo(rect.left,m_Y0);
 pDC->LineTo(rect.right,m_Y0);
 pDC->SelectObject(&oldPen2);
 ReleaseDC(pDC);
}
void CWaveShowerView::DrawPoint(CPoint pt, COLORREF color)
{
 CDC* pDC=GetDC();
 pDC->SetPixel(rect.left+pt.x,m_Y0-pt.y,color);
 ReleaseDC(pDC);

  接下来,在视类的OnInitialUpdate()初始化函数中添加代码以进行数据显示的各项前期准备工作,并在“打开数据文件”菜单的响应函数中添加代码以读取文件的内码。

void CWaveShowerView::OnInitialUpdate()
{
 CFormView::OnInitialUpdate();
 GetParentFrame()->RecalcLayout();
 ResizeParentToFit();
 GetScreenRect();
 for(int i=0;i<m_DX;i++)
  value[i].x=value[i].y=0;
 SetTimer(0,10,NULL);
}
void CWaveShowerView::OnOpenData()
{
 CString FileName="";
 CFile file;
 CFileDialog dlg(TRUE,"*","*.*",
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"所有文件(*.*)|*.*||",NULL);
 if(dlg.DoModal()==IDOK)
 {
  KillTimer(1);
  FileName=dlg.GetPathName();
  file.Open(FileName,CFile::modeReadWrite);
  m_BufLen=file.GetLength();
  buffer= new unsigned char[m_BufLen+m_DX+10];
  file.Read(buffer,m_BufLen);
  file.Close();
  SetTimer(1,10,NULL);
 }
}

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!
按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接