重绘问题
我要实现一个类似Windows任务管理器中CPU使用的界面,但是实现得不理想,请教原因:
创建了一个CView视图,定义了一个私有成员CRect rect;
在OnPaint()中如下,
CPaintDC dc(this);
GetWindowRect(rect);
ScreenToClient(rect);
CDC MemDC; //首先定义一个显示设备对象
MemDC.CreateCompatibleDC(&dc);
CBitmap MemBitmap;//定义一个位图对象
MemBitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
MemDC.SelectObject(&MemBitmap);
static int i=0;
MemDC.BitBlt(0,0,rect_2.Width(),rect_2.Height(),&dc,i,0,SRCCOPY);
MemDC.StretchBlt(i,0,rect_2.Width(),rect_2.Height(),&dc,0,0,rect_2.Width()-i,rect_2.Height(),SRCCOPY);
DrawWave(&MemDC); //绘制网格线
dc.BitBlt(0,0,rect_2.Width(),rect_2.Height(),&MemDC,0,0,SRCCOPY);
i+=8;
//绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
在OnTimer()函数中,
CDC *pDC=GetDC();
DrawWave(pDC);
InvalidateRect(rect);
RedrawWindow();
在DrawWave(CDC *pDC)函数中
for(int i = rect.left ; i < rect.right; i += 13)
{
pDC->MoveTo(i, rect.top);
pDC->LineTo(i, rect.bottom);
}
for(int j = rect.top ; j < rect.bottom; j += 13)
{
pDC->MoveTo(rect.left , j);
pDC->LineTo(rect.right, j);
}
结果却是:图像不断左移,但是网格线却是没有绘画,请问是为什么啊?