void CTest::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call CWnd::OnPaint() for painting messages
CPoint ptCenter;
CRect rect,ellipseRect;
GetClientRect(&rect);
ptCenter = rect.CenterPoint();
//用于缓冲作图的内存DC
CDC dcMem;
//内存中承载临时图象的位图
CBitmap bmp;
//依附窗口DC创建兼容内存DC
dcMem.CreateCompatibleDC(&dc);
//创建兼容位图
bmp.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
//将位图选择进内存DC
dcMem.SelectObject(&bmp);
//按原来背景填充客户区,不然会是黑色
dcMem.FillSolidRect(rect,dc.GetBkColor());
//在内存DC上做同样的同心圆图象
for(int i=20;i>0;i--)
{
ellipseRect.SetRect(ptCenter,ptCenter);
ellipseRect.InflateRect(i*10,i*10);
dcMem.Ellipse(ellipseRect);
}
//将内存DC上的图象拷贝到前台
dc.BitBlt(0,0,rect.Width(),rect.Height(), &dcMem,0,0,SRCCOPY);
//删除DC
dcMem.DeleteDC();
//删除位图
bmp.DeleteObject();
}
转载于:https://www.cnblogs.com/rogee/archive/2011/02/15/1954976.html