mfc中的雙緩衝機制

2021-05-27 12:20:09 字數 864 閱讀 5495

簡單來說其基本的概念:專門設定乙個暫時儲存圖形資訊的記憶體,將所有暫時的畫圖內容先放到暫存cdc中,然後再放入完所有的以後呼叫.

具體實現步驟

1.首先是定義乙個暫時的裝置上下文

cdc				h_bufdc;				// 雙緩衝層

cbitmap membitmap; //定義乙個位圖物件

2.然後對其進行初始化

cdc	*pdc = getdc();

h_bufdc.createcompatibledc(pdc);

membitmap.createcompatiblebitmap( pdc, screen_w, screen_h);

selectobject(h_bufdc,membitmap);

h_bufdc.fillsolidrect( 0, 0, screen_w, screen_h, rgb(255, 255, 255) );

3.操作

....中間可以將所需要的畫圖等其他的操作放到h_bufdc中去做

//4.接著使用顯示

cdc *pdc = getdc();//獲得顯示器裝置上下文,用於最終的顯示

pdc->bitblt( 0, 0, screen_w, screen_h, &h_bufdc, 0, 0, srccopy );//將暫存內容複製到顯示器裝置上下文中,從而顯示

5.最後釋放掉

membitmap.deleteobject();		//刪除位圖物件

h_bufdc.deletedc(); //刪除緩衝dc

雙緩衝機制

最早解釋多緩衝區如何工作的方式,是通過乙個現實生活中的例項來解釋的。在乙個陽光明媚的日子,你想將水池裡的水換掉,而又找不到水管的時候,你就只能用木桶來灌滿水池。當木桶被水龍頭注滿的,關掉水龍頭,走到水池旁邊,將水到進去,然後走回到水龍頭旁邊繼續重複上述工作,如此往復直到將水池灌滿。這就類似單緩衝工作...

MFC 雙緩衝技術

在做俄羅斯方塊遊戲的時候,遇到遊戲過程中螢幕閃爍問題,解決辦法如下 使用雙緩衝技術解決螢幕閃爍 修改檢視類的ondraw 函式 void cmytetrisview ondraw cdc pdc 修改檢視類的drawimage 函式 cmytetrisview 訊息處理程式 void cmytetr...

mfc雙緩衝技術

mfc繪圖時,頻繁的重新整理會導致螢幕閃爍現象,採用雙緩衝技術可以解決閃爍問題。主要方法是將影象先存在記憶體中,然後一次性顯示在螢幕上 步驟 去掉背景重新整理 bool c上位機view onerasebkgnd cdc pdc 在view類中修改ondraw函式 crect rect getcli...