在使用vc动态绘图的时候,简单图形可以采用GDI在内存绘图,然后覆盖到指定区域,示例代码如下:
........
........
//获得对话框上的picture的窗口句柄
pWnd->GetClientRect(&rect);
// 指针
CDC* pDC = pWnd->GetDC();
//内存绘图
CBitmap memBitmap;
CBitmap* pOldBmp = NULL;
//创建内存绘图设备
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memBitmap.CreateCompatibleBitmap(pDC,rect.right,rect.bottom);
pOldBmp = memDC.SelectObject(&memBitmap);
memDC.FillSolidRect(rect,RGB(128,128,128));
DrawBall(&memDC);
pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);
memDC.SelectObject(pOldBmp);
memDC.DeleteDC();
memBitmap.DeleteObject();
ReleaseDC(pDC);
............
........
........
//获得对话框上的picture的窗口句柄
pWnd->GetClientRect(&rect);
// 指针
CDC* pDC = pWnd->GetDC();
//内存绘图
CBitmap memBitmap;
CBitmap* pOldBmp = NULL;
//创建内存绘图设备
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memBitmap.CreateCompatibleBitmap(pDC,rect.right,rect.bottom);
pOldBmp = memDC.SelectObject(&memBitmap);
memDC.FillSolidRect(rect,RGB(128,128,128));
DrawBall(&memDC);
pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);
memDC.SelectObject(pOldBmp);
memDC.DeleteDC();
memBitmap.DeleteObject();
ReleaseDC(pDC);
............