1、雙緩衝做圖基本思路 函數
使用bitblt函數,其原理是能夠支持圖形塊的快速複製;因此,咱們能夠先在內存中做圖,而後使用BitBlt函數將內存中的圖片複製到前臺,同時禁止背景刷新,這樣就消除了閃爍。 this
2、雙緩衝做圖的實現步驟(如下顯示基於OnPaint函數) spa
CPaintDC dc(this); CRect rectClient; CDC dcMem,dcBkgnd; CBitmap bitmapTemp, *pOldBitmap; //獲取窗口信息 GetClientRect(&rectClient); //建立內存位圖 bitmapTemp.CreateCompatibleBitmap(&dc, rectClient.Width(), rectClient.Height()); //建立內存位圖 dcMem.CreateCompatibelBitmap(&dc); //依附窗口DC建立兼容的DC //將內存位圖選入內存dc pOldBitmap = dcMem.SelectObject(&bitmapTemp); //填充顏色 dcMem.FillSolidRect(rectClient,RGB(255,125,0)); //主要的做圖操做 //繪製圖片到主dc dc.BitBlt(0, 0, rectClient.Width(), rectClient.Height(), &dcMem, 0, 0, SRCCOPY); //內存復位 dcMem.SelectObject(pOldBitmap);
3、BitBlt函數說明: code
函數原型 圖片
BOOL BitBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int
nXSrc, int nYSrc, DWORD dwRop); 內存
參數 原型
hdcDest:指向目標設備環境的句柄。 it
nXDest:指定目標矩形區域左上角的X軸邏輯座標。 class
nYDest:指定目標矩形區域左上角的Y軸邏輯座標。 原理
nWidth:指定源和目標矩形區域的邏輯寬度。
nHeight:指定源和目標矩形區域的邏輯高度。
hdcSrc:指向源設備環境的句柄。
nXSrc:指定源矩形區域左上角的X軸邏輯座標。
nYSrc:指定源矩形區域左上角的Y軸邏輯座標。
dwRop:指定光柵操做代碼。這些代碼將定義源矩形區域的顏色數據,如何與目標矩形區域的顏色數據組合以完成最後的顏色。