关于MFC用双缓冲防止重绘闪烁的问题。 一个单文档的应用程序,使用双缓冲的时候怎么向内存中画入两幅图片 5
我写的代码://OnEraseBkgndBOOLCtestView::OnEraseBkgnd(CDC*pDC){//TODO:在此添加消息处理程序代码和/或调用默认值/...
我写的代码:
//OnEraseBkgnd
BOOL CtestView::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//return CView::OnEraseBkgnd(pDC);
return true;
}
//OnPaint
void CtestView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
CRect rect;
GetClientRect(&rect); //获得当前窗口的大小
CDC MemDC; //内存的指针
CBitmap bitmap; //内存的图片
MemDC.CreateCompatibleDC(&dc);
bitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
MemDC.SelectObject(&bitmap);
MemDC.FillSolidRect(rect,RGB(255,0,0));
//在这里可以添加自己的图片
CBitmap bk;
bk.LoadBitmapA(IDB_BG);
MemDC.SelectObject(&bk);
MemDC.BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
CBitmap num;
num.LoadBitmapA(IDB_NUM);
MemDC.SelectObject(&num);
MemDC.BitBlt(0,0,50,100,&MemDC,0,0,SRCCOPY);
////////////////////////////////////
MemDC.BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
dc.BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
}
我的意思是将第一个图片输出后,把第二个图片放在第一个图片上面,但是使用上面的代码后只显示不第二个图片,不显示第一个图片,请问有什么好的方法将在内存中将多个图片重叠在一起没有?我就这么一点分了 展开
//OnEraseBkgnd
BOOL CtestView::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//return CView::OnEraseBkgnd(pDC);
return true;
}
//OnPaint
void CtestView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
CRect rect;
GetClientRect(&rect); //获得当前窗口的大小
CDC MemDC; //内存的指针
CBitmap bitmap; //内存的图片
MemDC.CreateCompatibleDC(&dc);
bitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
MemDC.SelectObject(&bitmap);
MemDC.FillSolidRect(rect,RGB(255,0,0));
//在这里可以添加自己的图片
CBitmap bk;
bk.LoadBitmapA(IDB_BG);
MemDC.SelectObject(&bk);
MemDC.BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
CBitmap num;
num.LoadBitmapA(IDB_NUM);
MemDC.SelectObject(&num);
MemDC.BitBlt(0,0,50,100,&MemDC,0,0,SRCCOPY);
////////////////////////////////////
MemDC.BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
dc.BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
}
我的意思是将第一个图片输出后,把第二个图片放在第一个图片上面,但是使用上面的代码后只显示不第二个图片,不显示第一个图片,请问有什么好的方法将在内存中将多个图片重叠在一起没有?我就这么一点分了 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询