VC++中双缓冲技术画图

        [原文] http://biancheng.dnbcw.info/c/50421.html

 


用双缓冲,先在内存中绘制,然后拷贝到屏幕DC,这样就不会出现画出去的情况了,前段时间我也是为这个问题费了不少劲。我把我的一段代码给你看一下:


CDC   *pDC   =   m_drawbox.GetDC(); //这里的m_drawbox就是Picture控件对应的变量
CDC dcMem;  
CBitmap   bitmap;

bitmap.CreateCompatibleBitmap(pDC,300,300);  
dcMem.CreateCompatibleDC(pDC);  
CBitmap   *pOld   =   dcMem.SelectObject(&bitmap);   


dcMem.FillRect( CRect(0,0,300,300),(CBrush   *)dcMem.SelectStockObject(WHITE_BRUSH) );  
POSITION   pos   =   m_EntityList.GetHeadPosition();  
while(   pos   !=   NULL   )       m_EntityList.GetNext(pos)->Draw(&dcMem);//把链表中的图形全部绘制一编  
   
pDC->BitBlt (0,0,300,300,&dcMem,0,0,SRCCOPY);  
bitmap.DeleteObject();  
m_‍drawbox.ReleaseDC(pDC);

你可能感兴趣的:(MFC)