一.定义
这个就不说了,百度百科:https://baike.baidu.com/item/%E5%8F%8C%E7%BC%93%E5%86%B2
二.实现方法
方法一:
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
//随后建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(NULL);
//这时还不能绘图,因为没有地方画 ^_^
//建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小,也可以自己定义
//(如:有滚动条时就要大于当前窗口的大小,在BitBlt时决定拷贝内存的哪部分到屏幕上)
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);//将位图选入到内存显示设备中
//只有选入了位图的内存显示设备才有地方绘图,画到指定的位图上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
//先用背景色将位图清除干净,这里我用的是白色作为背景
//你也可以用自己应该用的颜色
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
//绘图
//MemDC.MoveTo(……);
//MemDC.LineTo(……);
//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
//绘图完成后的清理
//把前面的pOldBit选回来.在删除MemBitmap之前要先从设备中移除它
MemDC.SelectObject(pOldBit);
MemBitmap.DeleteObject();
MemDC.DeleteDC();
//版权:百度
方法二:
//网上的办法不好用,自己琢磨出来的
HDC MemDC = GetDC(hWnd);
RECT rc;
rc.left = 0;
rc.top = 0;
rc.bottom = CY;
rc.right = CX;
FillRect(hMemDC, &rc, (HBRUSH)GetStockObject(WHITE_BRUSH));//用白色画笔填充
//Draw
//MoveToEx(...);
//LineTo(...);
SwapBuffers(MemDC);//双缓冲(这是盖茨送的)