WINCE GIF

用C#显示GIF动画的方法~~~

不知道大家发现没有,用drawimage()方法画出来的GIF动画只能静止地显示第一帧。
picturebox控件虽然能够正常显示,但作为一个控件类,这个类有些太庞大了,将消耗大量的资源,窗体上多放几个,速度就明显变慢了!用C#写点小游戏,速度超慢可不行!(GIF与PNG都支持背景透明)
是不是没有办法了?不是,C#提供了imageanimator类来实现GIF动画。该类提供了CanAnimate、FrameCount、CurrentFrame等属性,以及Play()、Stop()、Reset()等动画常用的方法。
下面是一个示例:
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
//定义一个bitmap对像,用现有的GIF文件初始化。
        Bitmap bitmap = new Bitmap("1.gif");
//定义一个布尔型标记,用来指示是否开始播放动画。
        bool current = false;
        public void AnimateImage()
        {
     //如果函数首次调用,将执行IF语句中的内容,再次调用时,将不再执行IF中的语句,防止第二次调用Animate()方法。
            if (!current)
            {
                ImageAnimator.Animate(bitmap, new EventHandler(this.OnFrameChanged));
                current = true;
            }
        }
//将绘图区无效,此方法将引发重绘。
        private void OnFrameChanged(object o, EventArgs e)
        {
            this.Invalidate();
        }
//重写重绘的代码,以便在重绘发生时能够同时绘制GIF动画。
        protected override void OnPaint(PaintEventArgs e)
        {
            AnimateImage();
            ImageAnimator.UpdateFrames();
            e.Graphics.DrawImage(this.bitmap, new Point(0, 0));
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ImageAnimator.StopAnimate(bitmap, new EventHandler(this.OnFrameChanged));//停止
        }

        private void button2_Click(object sender, EventArgs e)
        {
          ImageAnimator.Animate(bitmap, new EventHandler(this.OnFrameChanged));//播放
        }

    }


特此声明代码归原作者所有!转自:http://bbs.bccn.net/thread-304452-1-8.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值