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

     

  • 相关阅读:
    深入理解Nginx及使用Nginx实现负载均衡
    Linux内存管理之伙伴系统之伙伴系统概述
    TCP 协议如何解决粘包、半包问题
    Linux CPU亲缘性详解
    单实例
    关联容器和无序关联容器的区别
    基于范围的for循环
    vector讲一个容器的内容拷贝到另一个容器,容器的区间删除
    win32窗口添加按钮及按钮消息相应,动态显示时间
    判断是不是纯数字字符串
  • 原文地址:https://www.cnblogs.com/ezhong/p/2171497.html
Copyright © 2011-2022 走看看