MFC双缓存画图,如果背景是一幅五颜六色的图画怎么处理
MFC双缓存画图,如果背景是一幅五颜六色的图画怎么办
{
CRect rc;
CDC dcMem;
GetClientRect(&rc);
CBitmap bmp;
dcMem.CreateCompatibleDC(pDC);
bmp.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height());
CBitmap *pOldBit=dcMem.SelectObject(&bmp);
dcMen.FillSolidRect(rc,RGB(255,255,255))/////////////////////////////
......
pDC->BitBlt(0,0,rc.Width(),rc.Height(),&dcMem,0,0,SRCCOPY);
dcMem.DeleteDC();
bmp.DeleteObject();
return true;
}
以上是最简单的双缓存画图。但是我在一个控件矩形内画了两次,第一次画了一幅画,五彩斑斓,画完第一次后,第二次我想在上面画线,也用双缓存,而且不能覆盖原来的画。这要怎么办啊?
------解决方案--------------------
把背景图再画一遍。一个是将原图片作为双缓存的底图,二是先截取需要绘图区的当前背景
------解决方案--------------------
不用吧
使用同一个内存dc就可以了!!
{
CRect rc;
CDC dcMem;
GetClientRect(&rc);
CBitmap bmp;
dcMem.CreateCompatibleDC(pDC);
bmp.CreateCompatibleBitmap(pDC,rc.Width(),rc.Height());
CBitmap *pOldBit=dcMem.SelectObject(&bmp);
dcMen.FillSolidRect(rc,RGB(255,255,255))/////////////////////////////
......
pDC->BitBlt(0,0,rc.Width(),rc.Height(),&dcMem,0,0,SRCCOPY);
dcMem.DeleteDC();
bmp.DeleteObject();
return true;
}
以上是最简单的双缓存画图。但是我在一个控件矩形内画了两次,第一次画了一幅画,五彩斑斓,画完第一次后,第二次我想在上面画线,也用双缓存,而且不能覆盖原来的画。这要怎么办啊?
mfc
CDC
双缓存
绘图
CPen
------解决方案--------------------
把背景图再画一遍。一个是将原图片作为双缓存的底图,二是先截取需要绘图区的当前背景
------解决方案--------------------
不用吧
使用同一个内存dc就可以了!!