关于移动滚动条时,Draw所发生的错误
void CDRAWView::OnDraw(CDC* pDC)
{
CDC MemDC; //定义一个显示设备对象
CBitmap MemBitmap; //定义一个位图对象
CRect reClip; //操作区域
int nWidth; //宽度
int nHeight; //高度
CDRAWDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
GetClientRect(&reClip); //得到区域矩形
nWidth = reClip.right - reClip.left; //得到区域宽度
nHeight = reClip.bottom - reClip.top;//得到区域高度
MemDC.CreateCompatibleDC(NULL); //建立与屏幕显示兼容的内存显示设备
//建立一个与屏幕显示兼容的位图
MemBitmap.CreateCompatibleBitmap(pDC, nWidth, nHeight); //将位图选入到内存显示设备中
CBitmap *pOldBit = MemDC.SelectObject(&MemBitmap); //用背景色将位图清除
MemDC.FillSolidRect(0, 0, nWidth, nHeight, m_BackColor);
pDoc->Draw(&MemDC, 0, 0, m_BackColor, pDoc->m_fBlc); //画图
//将内存中的图拷贝到屏幕上显示
pDC->BitBlt(0, 0, nWidth, nHeight, &MemDC, 0, 0, SRCCOPY);
MemDC.SelectObject(pOldBit);
MemBitmap.DeleteObject(); //清除位图对象
MemDC.DeleteDC(); //清除设备对象
}
这是我用双缓冲来绘图的,但是我发现当我的一个图元超过一个屏幕时,我拉动滚动条,会出来二个有重叠的图元,请问这是怎么回事,应该如何来解决?