• 双缓冲加载位图 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中。

     

  • 相关阅读:
    LInux下几种定时器的比较和使用
    R中字符串操作
    GIS基本概念
    特征选择实践
    xcrun: error: invalid active developer path (/Applications/Xcode.app/Contents/Developer)解决办法
    mac os idea的快捷键
    python代码打包发布
    机器学习之聚类
    机器学习之决策树
    机器学习之逻辑回归
  • 原文地址:https://www.cnblogs.com/ezhong/p/2171497.html
Copyright © 2020-2023  润新知