雙緩沖的原理可以這樣形象的理解把電腦屏幕看作一塊黑板首先我們在內存環境中建立一個虛擬的黑板然後在這塊黑板上繪制復雜的圖形等圖形全部繪制完畢的時候再一次性的把內存中繪制好的圖形拷貝到另一塊黑板(屏幕)上采取這種方法可以提高繪圖速度極大的改善繪圖效果
例如在OnDraw()函數中可以如下所述實現雙緩沖其主要步驟分為四步
CPen Pen;
PenCreatePen(PS_INSIDEFRAMERGB());
CBrush Brush;
BrushCreateSolidBrush(RGB());
CDC dcMem;
CBitmap bm;
CRect rc;
GetClientRect(&rc);
// Step :為屏幕DC創建兼容的內存DC :CreateCompatibleDC()
dcMemCreateCompatibleDC(pDC);
// Step :創建位圖CreateCompatibleBitmap()
bmCreateCompatibleBitmap(pDCrcWidth()rcHeight());
// Step :把位圖選入設備環境SelectObject()可以理解為選擇畫布
dcMemSelectObject(&bm);
dcMemSelectObject(Pen);
dcMemSelectObject(Brush);
dcMemEllipse();//畫橢圓
// Step :把繪制好的圖形拷貝到屏幕上:BitBlt()
pDC>BitBlt(rcWidth()rcHeight()&dcMemSRCCOPY);
dcMemDeleteDC();
bmDeleteObject();
這樣便實現了雙緩沖通過這個方法可以防止在VC中畫圖時出現屏幕閃爍的情況
From:http://tw.wingwit.com/Article/program/net/201311/13287.html