双缓存解决闪屏

双缓存:就是在内存中准备一块区域,把要显示的图形都加载到内存中,然后调用BitBlt函数,一次性把内存设备复制到显示设备上,这样就可以防止闪屏了。

 

和加载并显示一幅普通的位图的步骤是差不多的:

    CDC *pDC = GetDC();

    //背景,前景,内存位图    
    CBitmap bmpBack,bmpFront,bmpMem;

    //背景设备,前景设备,内存设备     
    CDC dcBack,dcFront,dcMem;

  
    //创建与显示设备兼容的位图   
    bmpMem.CreateCompatibleBitmap(pDC, 1024, 768);  
    //加载位图   
    bmpBack.LoadBitmap(IDB_BITMAP_BACK);   
    bmpFront.LoadBitmap(IDB_BITMAP_FRONT); 

  
    //创建与显示设备兼容的设备

    dcMem.CreateCompatibleDC(pDC);   
    dcBack.CreateCompatibleDC(pDC);   
    dcFront.CreateCompatibleDC(pDC);   
    
    //将位图选入设备   
    dcMem.SelectObject(&bmpMem);   
    dcBack.SelectObject(&bmpBack);

    dcFront.SelectObject(&bmpFront); 

  

    //先在内存上的位图绘制背景和前景
    dcMem.BitBlt(0, 0, 1024, 768, &dcBack, 0, 0, SRCCOPY);     
    dcMem.BitBlt(0, 0, 1024, 768, &dcFront, 0, 0, SRCCOPY);  
 
    //最后一次性的向显示设备显示位图,不会出现闪屏  
    pDC->BitBlt(0, 0, 1024, 768, &dcMem, 0, 0, SRCCOPY);  
 
    //释放资源  
    pDC->DeleteDC();  
    BackDC.DeleteDC();  
    FrontDC.DeleteDC();  
    MemDC.DeleteDC();

 

VC无闪烁刷屏技术的实现(双缓存)

http://blog.chinaunix.net/u2/82382/showart_1410654.html

VC使用双缓存技术,解决闪屏问题

http://blog.csdn.net/lizhigang34/archive/2008/05/28/2491594.aspx#

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值