还是防止闪屏的问题
SDI程序,在OnDraw()中实现大量的矢量图形的绘制,还是有屏幕闪烁的问题,使用内存作图还是无法解决。请教高手。
伪源码如下:
OnDraw()
{
int i,j;
CDC mem_dc;
CPen m_Pen;
CPen *m_pOldPen;
mem_dc.CreateCompatibleDC(pDC);
CRect rect;
GetClientRect(&rect);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,rect.Width(),rect.Height());
mem_dc.SelectObject(&bmp);
mem_dc.FillSolidRect(&rect,RGB(255,255,255)); //
//在mem_dc上面画图写字
m_Pen.CreatePen(PS_SOLID,1,RGB(128,128,128));
m_pOldPen=mem_dc.SelectObject(&m_Pen);
for(i=10;i<rect.Height();i+=10)
{
//horz
mem_dc.MoveTo(0,i);
mem_dc.LineTo(rect.Width(),i);
}
for(j=10;j<rect.Width();j+=10)
{
// ver
mem_dc.MoveTo(j,0);
mem_dc.LineTo(j,rect.Height());
}
// *********************list***************************
POSITION pos=m_ShapeList.GetHeadPosition ();
CShape *p;
while(pos)
{
p=(CShape *) m_ShapeList.GetAt(pos);
p->Draw (&mem_dc);
m_ShapeList.GetNext (pos);
}
//******************************************************
::BitBlt(pDC->GetSafeHdc(),0,0,rect.Width(),rect.Height(),mem_dc.GetSafeHdc(),0,0,SRCCOPY);
//
mem_dc.SelectObject(m_pOldPen);
}