我想另外将图绘制到背景上面,要不停的绘制,所以不用双缓存会闪屏,用的话,就会将背景刷成白色了
这是我的绘制背景的代码,我现在想再写个函数实现双缓存,画其他的内容
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);
}