VC实现图片移动(动画效果)

 

VC实现图片移动(动画效果)

 

更新日期:2010-12-15
代码下载:demo.zip (请不要直接使用迅雷下载)

测试环境:VC6.0+WinXP
图片预览:

━━━━━━━━━━━━━━━━━━━━━━━━


以下代码演示如何实现透明图片(或者一般图片)在背景图上移动效果。

一、原理简介:
    1.我们把所以图画到一个内存DC里,然后在Blt到屏幕,就是所谓的双缓冲了。
    2.在内存DC里画图时,先把背景图画到内存DC,再画上前景需要移动的图片就可以了

二、具体到我们下面的例子:
    1.定义2个CDrawBitmap对象,分别加载背景位图和前景移动的小飞机。
        CDrawBitmap g_bmp1("4244123431.bmp");
        CDrawBitmap g_bmp2("plane.bmp");

    2.鼠标按下移动,或者接收到时钟消息时就实现双缓冲。
        虽然代码有点“繁琐”,但记得我们关心的
        主要是下面代码中hMemDC。所有绘图代码都在这里进行。

        你经常不是这样调用的吗:
            //屏幕上打印字体,画矩形
            HDC hdc=::GetDC(m_hWnd);
            ::TextOut(hdc.......);
            ::RectangleRect(hdc......);
            ::ReleaseDC(m_hWnd,hdc) ;

        而在双缓冲里,只需把所有需要用到屏幕hdc的函数中的hdc替换成hMemDC,如:
            //屏幕上打印字体,画矩形
            ::TextOut(hMemDC.......);
            ::RectangleRect(hMemDC......);

        具体到我们这里的动画,就是:
            g_bmp1.Draw(hMemDC,0,0,600,600); //画背景图片到内存DC
            g_bmp2.DrawTransparent(hMemDC,point.x-50,point.y-100); //画移动的前进小图片

        画好后再调用BitBlt把内存hMemDC所有画好的东西拷贝到屏幕hScrDC
            BitBlt(hScrDC,0,60,600,600,hMemDC,0,0,SRCCOPY);

希望对你有所帮助,谢谢!愿一切吉祥,阿弥陀佛!

 

 

 

 

/****************************************************************************
CDrawBitmap封装了一些画图片的函数。

调用如下:
    CDrawBitmap g_bmp1("D://My Documents//My Pictures//风景图片//4244123431.bmp");
    g_bmp1.Draw(m_hWnd);
    
    CDrawBitmap g_bmp2("D://My Documents//My Pictures//风景图片//plane.bmp");
    g_bmp2.DrawTransparent(m_hWnd);

    CDrawBitmap g_bmp3("D://My Documents//My Pictures//风景图片//jzg2.bmp");
    g_bmp3.DrawTransparent(m_hWnd);

****************************************************************************/

//使用TransparentBlt需要添加 #prag
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值