还是上午的问题:想在一个大图的背景下绘制30个小图片,现在要使用双缓冲避免闪烁,
MemDC是内存的对象,dc是真正的屏幕,为了便于加入小图片,由定义了另一个内存的对象
MemDC1,我的OnPaint()函数如下: CPaintDC dc(this);
CDC MemDC,MemDC1; CBitmap m1;
CBitmap MemBitmap;
MemDC1.CreateCompatibleDC(&dc);
MemDC.CreateCompatibleDC(&dc); //下面建立一个与屏幕显示兼容的位图
MemBitmap.CreateCompatibleBitmap(&dc,m_nBoardWidth,m_nBoardHeight);
CBitmap *pOldBmp=MemDC.SelectObject(&MemBitmap);
pOldBmp = MemDC.SelectObject(&m_Back);//获取背景
MemDC.BitBlt(0, 0, m_nBoardWidth, m_nBoardHeight, &MemDC, 0, 0, SRCCOPY);//先在内存画背景 //大图
for (i = 0; i < 30; i++)
{
m1.LoadBitmap(IDB_BITMAP1+i-1);//循环获取30个小图
pOldBmp = MemDC1.SelectObject(&m1);
MemDC.BitBlt(pt.x, pt.y, 36,36, &MemDC1, 0, 0, SRCCOPY);//接着画小图
m1.DeleteObject();
}
dc.BitBlt(0, 0, m_nBoardWidth, m_nBoardHeight, &MemDC, 0, 0, SRCCOPY);
//将绘制的内容刷新到屏幕上
MemDC.SelectObject(&pOldBmp);//恢复内存DC的原位图
MemDC.DeleteDC();//释放内存DC
MemDC1.DeleteDC();
MemBitmap.DeleteObject();现在问题是:一个大黑框,没有背景图片,小图片都在,请教各位,代码错在哪里呢?没办法跟踪调试
MemDC是内存的对象,dc是真正的屏幕,为了便于加入小图片,由定义了另一个内存的对象
MemDC1,我的OnPaint()函数如下: CPaintDC dc(this);
CDC MemDC,MemDC1; CBitmap m1;
CBitmap MemBitmap;
MemDC1.CreateCompatibleDC(&dc);
MemDC.CreateCompatibleDC(&dc); //下面建立一个与屏幕显示兼容的位图
MemBitmap.CreateCompatibleBitmap(&dc,m_nBoardWidth,m_nBoardHeight);
CBitmap *pOldBmp=MemDC.SelectObject(&MemBitmap);
pOldBmp = MemDC.SelectObject(&m_Back);//获取背景
MemDC.BitBlt(0, 0, m_nBoardWidth, m_nBoardHeight, &MemDC, 0, 0, SRCCOPY);//先在内存画背景 //大图
for (i = 0; i < 30; i++)
{
m1.LoadBitmap(IDB_BITMAP1+i-1);//循环获取30个小图
pOldBmp = MemDC1.SelectObject(&m1);
MemDC.BitBlt(pt.x, pt.y, 36,36, &MemDC1, 0, 0, SRCCOPY);//接着画小图
m1.DeleteObject();
}
dc.BitBlt(0, 0, m_nBoardWidth, m_nBoardHeight, &MemDC, 0, 0, SRCCOPY);
//将绘制的内容刷新到屏幕上
MemDC.SelectObject(&pOldBmp);//恢复内存DC的原位图
MemDC.DeleteDC();//释放内存DC
MemDC1.DeleteDC();
MemBitmap.DeleteObject();现在问题是:一个大黑框,没有背景图片,小图片都在,请教各位,代码错在哪里呢?没办法跟踪调试
这句是干啥的?从内存DC到同一内存DC,不是等于没有?
这句是什么意思啊,从MemDC拷贝到MemDC?
还有MemBitmap干什么用的啊?
改成MemDC.BitBlt(0, 0, m_nBoardWidth, m_nBoardHeight, &MemDC1, 0, 0, SRCCOPY);//
也是一样啊
请教大家怎么改呢?