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();                                        //删除位图

     

  • 相关阅读:
    mysql函数基本使用
    django form 组件源码解析
    jwt
    python数据类型 ——bytes 和 bytearray
    汇编基础四 --函数调用与堆栈平衡
    汇编基础之三 -- 汇编指令
    汇编基础之二 -- 寄存器和内存堆栈
    汇编基础之一 -- 位运算和四则运算的实现
    存储过程中的设置语句含义
    (转载)SQL去除回车符,换行符,空格和水平制表符
  • 原文地址:https://www.cnblogs.com/lpjdbk/p/3704491.html
Copyright © 2011-2022 走看看