zoukankan      html  css  js  c++  java
  • 双缓冲加载位图 WinCE

    void CMy08301Dlg::OnPaint()

    {

    CPaintDC dc(this);

    CDC dcMem;

    CBitmap bmpMem;

    dcMem.CreateCompatibleDC(&dc);

    bmpMem.CreateCompatibleBitmap(&dc,800,480);

    dcMem.SelectObject(&bmpMem);

    CDC dcMem2;

    dcMem2.CreateCompatibleDC(&dcMem);

    CBitmap bmpMem2;

    CString ok=L"//……//ok.bmp/0";

    CString cancel=L"//……//cancel.bmp/0";

    bmpMem2.m_hObject=SHLoadDIBitmap(ok);

    dcMem2.SelectObject(&bmpMem2);

    dcMem.BitBlt(700,350,82,36,&dcMem2,0,0,SRCCOPY);  //加载位图ok

    //---------------------------------------------------------------------------------------

    bmpMem2.m_hObject=SHLoadDIBitmap(cancel);

    dcMem2.SelectObject(&bmpMem2);

    dcMem.BitBlt(707,8,70,45,&dcMem2,0,0,SRCCOPY);     //加载位图cancel

    //重复上面三句代码 加载多幅位图

    //--------------------------------------------------------------------------------------

    dc.BitBlt(0,0,800,480,&dcMem,0,0,SRCCOPY);

    bmpMem2.DeleteObject();

    dcMem2.DeleteDC();

    bmpMem.DeleteObject();

    dcMem.DeleteDC();

    }

    当前DC  dc;
    兼容DC1  dcMem;
    兼容DC2  dcMem2;
    双缓冲:1: 重复利用dcMem2加载位图到dcMem,
                2:讲dcMem画面加载至当前dc。
    优点:将多幅位图复制到兼容DC1:dcMem中,再复制到当前dc中,不会出现一副副图片依次出现的现象
             如果只加载一副图片就没必要双缓冲了。

    备注:windows桌面系统下:

    1.没有SHLoadDIBitmap

    2.貌似也不能重复用dcMem2,我定义了多个兼容DC将位图加载到dcMem中。

     

  • 相关阅读:
    Java的代理proxy机制
    Java 编译器 javac 笔记:javac API、注解处理 API 与 Lombok 原理
    Java 运行时获取方法参数名
    python 之 list 和 dict 置空
    Python 模块(Module)调用
    Python 模块(Module)及包
    Mybatis中进行批量更新(updateBatch)
    可持久化线段树+主席树+动态主席树
    无向图的割点与割边
    [NOIP2016] 愤怒的小鸟 题解
  • 原文地址:https://www.cnblogs.com/ezhong/p/2171497.html
Copyright © 2011-2022 走看看