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中。

     

  • 相关阅读:
    连通域搜索
    识别深色浅色
    新年,博客搬家了!!!
    C++11 —— 使用 thread 实现线程池
    自己实现的网络字节序转换函数
    GUI 编程 —— QT 的 QSlider 鼠标点击定位问题
    单生产者/单消费者 的 FIFO 无锁队列
    用模板类特化的方式实现工厂模式
    C++11 —— 简易的旋转锁类
    C++11 —— 获取 tuple 参数列表中指定数据类型的索引位置
  • 原文地址:https://www.cnblogs.com/ezhong/p/2171497.html
Copyright © 2011-2022 走看看