1. 程式人生 > >VC GDI雙緩衝機制繪圖防螢幕閃爍實現步驟

VC GDI雙緩衝機制繪圖防螢幕閃爍實現步驟

引用:http://blog.csdn.net/xgx198831/article/details/8268731

在OnDraw(CDC* pDC) 中新增如下程式碼

     CDC MemDC; //首先定義一個顯示裝置物件
  CBitmap MemBitmap;//定義一個位圖物件
  //隨後建立與螢幕顯示相容的記憶體顯示裝置
  MemDC.CreateCompatibleDC(NULL);
  //這時還不能繪圖,因為沒有地方畫 ^_^
  //下面建立一個與螢幕顯示相容的點陣圖,至於點陣圖的大小嘛,可以用視窗的大小,也可以自己定義(如:有滾動條時就要大於當前視窗的大小,在BitBlt時決定拷貝記憶體的哪部分到螢幕上)
  MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
  //將點陣圖選入到記憶體顯示裝置中
  //只有選入了點陣圖的記憶體顯示裝置才有地方繪圖,畫到指定的點陣圖上
  CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
  //先用背景色將點陣圖清除乾淨,這裡我用的是白色作為背景
  //你也可以用自己應該用的顏色
  MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
  //繪圖
  MemDC.MoveTo(……);
  MemDC.LineTo(……);
  //將記憶體中的圖拷貝到螢幕上進行顯示
  pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
  //繪圖完成後的清理
  MemBitmap.DeleteObject();

  MemDC.DeleteDC();