双缓存

CBitmap m_bmpHouse;
 CBitmap m_bmpSmallPsr;

 m_bmpSmallPsr.LoadBitmap(IDB_CCC);   //加载资源
 m_bmpHouse.LoadBitmap(IDB_BBB);
 SetTimer(100,100,NULL);

 

CPaintDC dc(this); // 用于绘制的设备上下文

static int i = 0;

       CBitmap bmpp;

       BITMAP bmpinfo;

       CRect rcSCr;

       GetClientRect(&rcSCr);

       bmpp.CreateCompatibleBitmap(&dc,rcSCr.Width(),rcSCr.Height());

 

       CDC dcmem,dctmp;

       dcmem.CreateCompatibleDC(&dc);                 

       dctmp.CreateCompatibleDC(&dcmem);                   

       dcmem.SelectObject(&bmpp);

 

       dctmp.SelectObject(&m_bmpHouse);              //临时DC选入房子图片位图

       m_bmpHouse.GetBitmap(&bmpinfo);

       dcmem.BitBlt(0,0,bmpinfo.bmWidth,bmpinfo.bmHeight,&dctmp,0,0,SRCCOPY);    //在内存DC上绘图,先把房子画上去

 

       dctmp.SelectObject(&m_bmpSmallPsr);              //临时DC选入小人图片位图

       m_bmpSmallPsr.GetBitmap(&bmpinfo);

       //SRCERASE不错MERGEPAINT

       //dcmem.BitBlt(i,50,bmpinfo.bmWidth,bmpinfo.bmHeight,&dctmp,0,0,SRCERASE);   //在内存DC上绘图,再把小人画上去

    dcmem.TransparentBlt(i,50,bmpinfo.bmWidth,bmpinfo.bmHeight,&dctmp,0,0,bmpinfo.bmWidth,bmpinfo.bmHeight,RGB(255,0,255));

 

       dc.BitBlt(0,0,rcSCr.Width(),rcSCr.Height(),&dcmem,0,0,SRCCOPY);   //最后在屏幕DC上画图,把内存DC上的图搬上去

       dcmem.DeleteDC();                         //清理资源

       dctmp.DeleteDC();

 

       TRACE("%d\n",++i);

       if (i > rcSCr.Width())

       {

           i = -bmpinfo.bmWidth;

       }

 if (100 ==  nIDEvent)
 {
  Invalidate(0);
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值