| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5290 人关注过本帖, 1 人收藏
标题:用C#显示GIF动画的方法~~~
取消只看楼主 加入收藏
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
结帖率:100%
收藏(1)
 问题点数:0 回复次数:0 
用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));//播放
        }
    }



[ 本帖最后由 athenalux 于 2010-4-26 15:27 编辑 ]
搜索更多相关主题的帖子: GIF 动画 
2010-04-26 15:16
快速回复:用C#显示GIF动画的方法~~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044129 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved