天天看點

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

在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();

繼續閱讀