回 帖 发 新 帖 刷新版面

主题:问一个内存DC的问题

内存DC在创建时能不能大于显示DC。我想创建一个内存DC的大小得于图片大小,再一次把内存DC全部复制到显示DC上。有大侠指点下!!!

回复列表 (共1个回复)

沙发

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;

// 小结:此方法可以解决图片显示内容多时,产生画面闪动的问题。

我来回复

您尚未登录,请登录后再回复。点此登录或注册