在开发程序时候出现这种情况:前台画面变化时,需要重画背景,以抹去上次所画的前台画面,但是这样速度快的时候,整个画面会闪烁的很厉害。据说双图像缓冲技术可以消除这种闪烁,具体是如何实现的呢?若能解决,小弟不胜感激

解决方案 »

  1.   

    网上搜索下 用VC实现双缓冲技术
    我blog上也写过,可惜现在打不开,csdn blog有点差劲
    http://blog.csdn.net/seu07201213/
      

  2.   

    添加消息 WM_ERASEBKGROUND 添加代码
      

  3.   

    CDC * dc;
    CBitmap m_bmp;
    CDC m_compatdc;
    CRect rect;
    this->GetClientRect(rect);
      CDC *dc=this->GetDC();
    if(!m_compatdc.CreateCompatibleDC(NULL))
    {
    ::PostQuitMessage(0);
    }

    m_bmp.CreateCompatibleBitmap(dc, rect.Width(), rect.Height()); m_compatdc.SelectObject( &m_bmp);
    你的绘图代码
    dc->BitBlt(rect.left, rect.top,rect.Width(), rect.Height(), &m_compatdc, 0, 0, SRCCOPY); m_bmp.DeleteObject(); this->ReleaseDC(dc);
      

  4.   

    可以使用cmemdc代码类,对双缓冲区的操作进行了封装