对双缓冲一直很迷糊。比如我要在一个300*300像素的客户区上绘图,客户区被分为10*10块,(用数组A[10][10]表示)。如果A[i][j]==1,那么就在相应的客户区位置显示一幅30*30像素的位图(假定位图都是一样的,IDB_BITMAP)。以上用双缓冲如何实现。求高手给个具体点的思路或者伪代码

解决方案 »

  1.   

    m_dcBack.DeleteDC(); //CDC m_dcBack;//定义个内存DC
    m_dcBack.CreateCompatibleDC(GetDC());
    CBitmap bm;
    bm.loadBitmap(IDB_BITMAP);
    bm.CreateCompatibleBitmap(GetDC(),10,10); 
    CBitmap *pbm=m_dcBack.SelectObject(&bm);//这样这个就是存了图片的DC了想在某个位置x,y显示就可以用
    CClientDC dc(this)
    dc.Bitblt(x*10,y*10,10,10,&m_dcBack,0,0,SRCCOPY)
    或者你可以再一起画在另一个内存DC里,再一次性Bitblt出来
      

  2.   

    说的简单点,就是用一个兼容DC先处理你所有要显示的图像信息,然后将这个兼容DC的内容一次抛向最终的显示DC进行显示。。