C++MFC(13)-雙緩衝技術實現繪圖

  雙緩衝即在內存中創建一個與屏幕繪圖區域一致的對象,先將圖形繪製到內存中的這個對象上,再一次性將這個對象上的圖形拷貝到屏幕上,這樣能大大加快繪圖的速度。
MARK一下實現步驟,略去了項目的繪畫代碼,親測有效。
我程序中是在
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
CMainFrame::OnSize()

CDC MemDC;        //首先定義一個顯示設備對象
CBitmap MemBitmap;//定義一個位圖對象 //隨後建立與屏幕顯示兼容的內存顯示設備
MemDC.CreateCompatibleDC(NULL); //這時還不能繪圖,因爲沒有地方畫 ^_^
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); //將內存中的圖拷貝到屏幕上進行顯示
MemDC.SelectObject(pOldBit); 
MemBitmap.DeleteObject(); 
MemDC.DeleteDC();

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章