主题:问一个内存DC的问题
alucard83
[专家分:10] 发布于 2008-02-15 11:45:00
内存DC在创建时能不能大于显示DC。我想创建一个内存DC的大小得于图片大小,再一次把内存DC全部复制到显示DC上。有大侠指点下!!!
回复列表 (共1个回复)
沙发
shuukaki [专家分:850] 发布于 2008-02-15 14:54:00
CDC* m_pMemDC; // 内存DC
m_pMemDC->CreateCompatibleDC(NULL); // 创建内存DC
// 创建一幅内存图片(相当于一张白纸),并选进内存DC,此时就可以在内存DC上进行描绘操作。
CBitmap *pMemBmp = new CBitmap;
pMemBmp->CreateCompatibleBitmap(pDC, nWidth, nHeight);
m_pMemDC->SelectObject(pMemBmp);
pMemBmp->DeleteObject();
delete pMemBmp;
// 在这里添加在内存DC上的操作。
// 例如:m_pMemDC->Rectangle(&m_PicRect);
.......
// 当内存DC画完后,将内存DC一括拷贝的现有显示的DC上即可
pDC->BitBlt(m_PicRect.left, m_PicRect.top, m_PicRect.Width(), m_PicRect.Height(), m_pMemDC, 0, 0, SRCCOPY);
// 最后释放内存DC
m_pMemDC->DeleteDC();
delete m_pMemDC;
// 小结:此方法可以解决图片显示内容多时,产生画面闪动的问题。
我来回复