zoukankan      html  css  js  c++  java
  • MFC双缓冲绘图

    在双缓冲方法中,首先要做的是屏蔽背景刷新。背景刷新其实是在响应WM_ERASEBKGND消息。我们在视类中添加对这个消息的响应,可以看到缺省的代码如下:

    BOOL CMYView::OnEraseBkgnd(CDC* pDC)

    {

          return CView::OnEraseBkgnd(pDC);

    }

    是调用父类的OnEraseBkgnd函数,我们屏蔽此调用,只须直接return TRUE;即可。

     

     

    CDC dcMem;                                                  //用于缓冲作图的内存DC

    CBitmap bmp;                                                 //内存中承载临时图象的位图

    dcMem.CreateCompatibleDC(pDC);               //依附窗口DC创建兼容内存DC

    bmp.CreateCompatibleBitmap(&dcMem,rect.Width(),rect.Height());//创建兼容位图

    dcMem.SelectObject(&bmp);                          //将位图选择进内存DC

    dcMem.FillSolidRect(rect,pDC->GetBkColor());//按原来背景填充客户区,不然会是黑色

    //////////////////////////////////////////////////////////////////

    绘图部分代码,使用dcMem,不要用pDC。

    /////////////////////////////////////////////////////////////////

    pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);//将内存DC上的图象拷贝到前台

    dcMem.DeleteDC();                                       //删除DC

    bm.DeleteObject();                                        //删除位图

     

  • 相关阅读:
    vrf
    安装diskimage-builder制作ironic镜像
    打印bios启动日志
    iproute2更新
    ip link add type vrf报错哦
    ip link add type vrf报错哦
    case 条件语句
    Go项目结构
    MySQL与Python交互
    数据提取之JSON与JsonPATH
  • 原文地址:https://www.cnblogs.com/lpjdbk/p/3704491.html
Copyright © 2011-2022 走看看