内存DC可以加快绘制速度,避免在刷新频率比较高的时候,出现空白闪烁的情况
CDC dcMem;
dcMem.CreateCompatibleDC(pDC);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(pDC, _windowWidth, _windowHeight);
CBitmap *oldBitmap = dcMem.SelectObject(&bitmap);
之后就可以使用内存DC进行绘制,在绘制完之后需要将内存DC上的bitmap拷贝到DC上
pDC->BitBlt(0, 0, _windowWidth, _windowHeight, &dcMem, 0, 0, SRCCOPY);
最后最为重要的一点是要释放bitmap、内存DC,否则在进行多次绘制之后DC的内存会被用完,出现不可预知的错误,另外对于所有create....类似的函数,都应该注意是否需要进行delete.....操作。
dcMem.SelectObject(oldBitmap);
bitmap.DeleteObject();
dcMem.DeleteDC();