簡單來說其基本的概念:專門設定乙個暫時儲存圖形資訊的記憶體,將所有暫時的畫圖內容先放到暫存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...