void CMfcTestDlg::OnPaint() 
{
CPaintDC dc(this);
DrawLine(&dc);
}
void CMfcTestDlg::DrawLine(CDC *pDC)
{
CRect rect;
GetClientRect(&rect);
CDC dc;//创建用于作图的内存DC
CBitmap bmp;//内存中承载临时图像的位图
dc.CreateCompatibleDC(pDC);//创建兼容内存DC
bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());//创建兼容的位图 dc.SelectObject(&bmp);
srand((unsigned int) time(NULL));
dc.FillSolidRect(0,0,rect.Width(),rect.Height(),RGB(255,255,255));
CPen pen(PS_SOLID,2,RGB(0,255,30));
dc.SelectObject(&pen);
for (int i =0 ;i != 30;i++)
{
dc.MoveTo(20,i+20*i);
dc.LineTo(800,i+20*i);
}
for (i =0;i != 10;i++)
{
int x,y;
x = rand()%741;
y = rand()%564;
dc.LineTo(x,y);
}
pDC->BitBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);//缓冲区的图像拷到前台
dc.DeleteDC();
bmp.DeleteObject();
}代码如上,不知道什么问题,重绘还是有闪烁的问题,特别是对话框上面的按钮!