国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
VC的內(nèi)存繪圖防止屏幕閃爍技術(shù)的實現(xiàn)
在工業(yè)控制系統(tǒng)中,經(jīng)常需要實時的顯示一些曲線,運用傳統(tǒng)的繪圖方法,會引起屏幕的強烈閃爍?,F(xiàn)在常用的解決方法是:利用內(nèi)存繪圖的技術(shù),將需顯示的圖形繪制在內(nèi)存位圖中,然后再拷貝到屏幕上,很好的解決了屏幕閃爍的問題。并且處理速度快。
其實VC的內(nèi)存繪圖的資料網(wǎng)上也很多,本人根據(jù)自己的實踐經(jīng)驗,并結(jié)合網(wǎng)友的文章,給出一個簡單的編程實例,僅供網(wǎng)友參考。
編程實現(xiàn):
第一步:用VC6.0生成一個基于對話框的工程,起名為:xv001。
在對話框上添加一個Picture控件,設(shè)置ID為IDC_COORD,調(diào)整控件的位置和大小,直至合適。
在xv001Dlg的類中添加以下變量:
 CRect rect;                  // 存儲繪圖控件的繪圖區(qū)域
        CDC *pDC;                  // 控件的屏幕繪圖設(shè)備指針
        CDC memDC;              // 內(nèi)存繪圖設(shè)備
        CBitmap memBitmap;  // 用于內(nèi)存繪圖的位圖 
        CBitmap* pOldBmp;    // 備份舊的位圖指針
        CWnd* pWnd;             // 繪圖控件的指針
 第二步:用ClassWizard在xv001Dlg類中添加OnInitDialog()消息響應(yīng)函數(shù)。實現(xiàn)繪圖需要變量的初始化工作,具體代碼如下:
pWnd = GetDlgItem(IDC_COORD); // 獲得對話框上的picture的窗口句柄
       pWnd->GetClientRect(&rect);         // 獲取繪制坐標的文本框
pDC = pWnd->GetDC();                 // 獲得對話框上的picture的設(shè)備指針
       pOldBmp = NULL;                           // 將舊的位圖指針置空
       // 創(chuàng)建內(nèi)存繪圖設(shè)備,使內(nèi)存位圖的DC與控件的DC關(guān)聯(lián)
       memDC.CreateCompatibleDC(pDC);
       memBitmap.CreateCompatibleBitmap(pDC,rect.right,rect.bottom);
       pOldBmp = memDC.SelectObject(&memBitmap);
第三步:在xv001Dlg類中添加繪圖函數(shù),此函數(shù)的功能是:隨機繪制一幅位圖。
void CXv001Dlg::DrawWave(CDC *pDC)
{
 CPen pen,*oldpen;
 
 memDC.Rectangle(rect.left,rect.top,rect.right,rect.bottom);
 for(int i =0; i<1500; i++)
 {
  pen.CreatePen(PS_SOLID,1, RGB(rand()%255,rand()%255,rand()%255));   
  oldpen = memDC.SelectObject(&pen);
 
  int x0,y0,x1,y1;
 
  x0 = rand()%rect.Width();
  x1 = rand()%rect.Width();
  y0 = rand()%rect.Height();
  y1 = rand()%rect.Height();
 
  memDC.MoveTo(x0,y0);
  memDC.LineTo(x1,y1);
 
  memDC.SelectObject(oldpen);
  pen.DeleteObject();
 }
}
第四步:在xv001Dlg類中添加OnTimer()、OnPaint()和OnClose的消息響應(yīng)函數(shù)。
在OnInitDialog()函數(shù)總添加如下代碼
 SetTimer(1,10,NULL);          // 啟動定時器
在OnTimer()函數(shù)中添加
DrawWave(&memDC);         // 在位圖中畫圖片
       OnPaint();                            // 使屏幕刷新        

在OnPaint()函數(shù)中添加如下代碼,實現(xiàn)將生成的圖片拷貝到屏幕上,完成整個繪圖的工作。
pDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,&memDC,0,0,SRCCOPY);
最后:在OnClose()函數(shù)中,別忘了銷毀繪圖及位圖設(shè)備的指針。
 memDC.SelectObject(pOldBmp);
        memDC.DeleteDC();
        memBitmap.DeleteObject();
程序執(zhí)行結(jié)果如下:
 
此程序在winxp系統(tǒng)下,用VC++6.0調(diào)試通過。
 
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/aidy22/archive/2009/08/06/4419415.aspx
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/aidy22/archive/2009/08/06/4419415.aspx
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/aidy22/archive/2009/08/06/4419415.aspx
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/aidy22/archive/2009/08/06/4419415.aspx
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MFC雙緩沖解決閃爍問題 (zhuanzai)
內(nèi)存DC
今天在學(xué)習(xí)用內(nèi)存DC畫圖,終于有了初步了解?,F(xiàn)將收集的關(guān)于內(nèi)存DC介紹及其相關(guān)操作的資料貼出來共享一下。
CreateCompatibleDC
用內(nèi)存設(shè)備環(huán)境(Memory Device Context)與GetClipBox函數(shù)(獲得需要重繪的區(qū)域)實現(xiàn)無閃爍的高效繪圖
測井曲線繪圖顯示算法總結(jié)——雙緩沖技術(shù)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服