求助,MFC使用双缓存解决闪烁的问题
我创建了MFC单文档,在OnEraseBkgnd内设置为return true;我在自己写了一个函数实现双缓存绘制背景图在ondraw里调用,如何在使用双缓存绘制其他的图,而不会刷新背景图?
我想另外将图绘制到背景上面,要不停的绘制,所以不用双缓存会闪屏,用的话,就会将背景刷成白色了
这是我的绘制背景的代码,我现在想再写个函数实现双缓存,画其他的内容
void CRadarView::DrawBkMap(void) //绘制图片
{
CDC *pDC = this->GetDC();
CDC MemDC; //首先定义一个显示设备对象
CBitmap MemBitmap;//定义一个位图对象
MemDC.CreateCompatibleDC(NULL); //随后建立与屏幕显示兼容的内存显示设备
MemBitmap.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
MemDC.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(255,255,255));
//////////////////////////////绘背景图//////////////////////////////////////////
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(&MemDC);
HBITMAP OldBitmap = (HBITMAP)dcCompatible.SelectObject(&bitmap);
MemDC.StretchBlt(xPos,yPos,m_Width,m_Height,&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY); //放置图片
dcCompatible.SelectObject(&OldBitmap);
ReleaseDC(&dcCompatible); //释放资源,防止内存泄露不断增长
///////////////////////////绘图片边框/////////////////////////////////////////////////
CPen pen;
pen.CreatePen(PS_SOLID,3,RGB(0,0,0));
MemDC.SelectObject(&pen);
CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
MemDC.SelectObject(pBrush);
MemDC.Rectangle(xPos,yPos,xPos+m_Width,yPos+m_Height); //图片边框
//////////////////////////////////////将内存中的图贴到屏幕上////////////////////////////////////////////
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC, 0, 0, SRCCOPY);
MemBitmap.DeleteObject();
MemDC.DeleteDC();
ReleaseDC(pDC);
}