高手帮忙:在DIALOG中的OnPaint函数中绘图,为什么一移动就没了。解决办法
高手帮忙:::在DIALOG中的OnPaint函数中绘图,为什么一移动就没了。
BOOL CBitMap1Dlg::OnInitDialog()
{
...
CPaintDC dc(this);
// 创建内存兼容DC
m_memDC.CreateCompatibleDC(&dc);
CBitmap memBit ;
memBit.CreateCompatibleBitmap(&dc, 1000, 1000); // 内存位图大小
pSizeBmp = memDC.SelectObject(&memBit);
// 创建临时兼容内存DC, 用于贴到memDC中
CBitmap memDC_temp;
memDC_temp.CreateCompatibleDC(&dc);
// 背景
bit0.LoadBitmap(IDB_BG);
memDC_temp.SelectObject(&bit0);
memDC.BitBlt(0, 0, 1000, 1000, &memDC_temp, 0, 0, SRCCOPY);
memDC_temp.SelectObject(pSizeBmp);
// 贴其他图片
...
}
void CBitMap1Dlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// 把m_memDC画到dc上
dc.BitBlt(0, 0, 1000, 1000, &m_memDC, 0, 0, SRCCOPY);
memDC.SelectObject(pSizeBmp);
}
我是用一个m_memDC做内存DC,每次将memDC_temp的位图贴到m_memDC中,最后在OnPaint函数中一次贴到窗口中。
问题:程序启动,显示图片,但是移动窗口时,即再次调用OnPaint,为什么图片就没了?
------解决方案--------------------
dc.BitBlt(0, 0, 1000, 1000, &m_memDC, 0, 0, SRCCOPY);
// memDC.SelectObject(pSizeBmp);
BOOL CBitMap1Dlg::OnInitDialog()
{
...
CPaintDC dc(this);
// 创建内存兼容DC
m_memDC.CreateCompatibleDC(&dc);
CBitmap memBit ;
memBit.CreateCompatibleBitmap(&dc, 1000, 1000); // 内存位图大小
pSizeBmp = memDC.SelectObject(&memBit);
// 创建临时兼容内存DC, 用于贴到memDC中
CBitmap memDC_temp;
memDC_temp.CreateCompatibleDC(&dc);
// 背景
bit0.LoadBitmap(IDB_BG);
memDC_temp.SelectObject(&bit0);
memDC.BitBlt(0, 0, 1000, 1000, &memDC_temp, 0, 0, SRCCOPY);
memDC_temp.SelectObject(pSizeBmp);
// 贴其他图片
...
}
void CBitMap1Dlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// 把m_memDC画到dc上
dc.BitBlt(0, 0, 1000, 1000, &m_memDC, 0, 0, SRCCOPY);
memDC.SelectObject(pSizeBmp);
}
我是用一个m_memDC做内存DC,每次将memDC_temp的位图贴到m_memDC中,最后在OnPaint函数中一次贴到窗口中。
问题:程序启动,显示图片,但是移动窗口时,即再次调用OnPaint,为什么图片就没了?
------解决方案--------------------
dc.BitBlt(0, 0, 1000, 1000, &m_memDC, 0, 0, SRCCOPY);
// memDC.SelectObject(pSizeBmp);