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:指定光栅操做代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。