吉吉于

C#每天抄一点(29):GIF

ImageAnimator.UpdateFrames()

使该帧在当前正被动画处理的所有图像中前移。 新帧在下一次呈现图像时绘制。

Invalidate()

Invalidate 方法控制绘制或重新绘制的内容。

ImageAnimator.Animate

将多帧图像显示为动画。

 

01 /*
02 * 由SharpDevelop创建。
03 * 用户: Lazynight
04 * 日期: 2011/10/27
05 * 时间: 20:58
06 *
07 * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
08 */
09 using System;
10 using System.Collections.Generic;
11 using System.Drawing;
12 using System.Windows.Forms;
13
14 namespace Lazy29_GIF
15 {
16
17     public partial class MainForm : Form
18     {
19         Bitmap bitmap=new Bitmap(Application.StartupPath+“\\lazynight.gif”);
20         //定义Bitmap对象,并赋值为制定的gif动画
21         bool current=false;
22         //定义布尔型全局变量,并赋值为假
23         public MainForm()
24         {
25             InitializeComponent();
26         }
27         void Button1Click(object sender, EventArgs e)
28         {
29             PlayImage();
30             //调用playimage方法
31             ImageAnimator.Animate(bitmap,new EventHandler(this.OnFrameChanged));
32             //播放GIF
33         }
34         void Button2Click(object sender, EventArgs e)
35         {
36             ImageAnimator.StopAnimate(bitmap,new EventHandler(this.OnFrameChanged));
37             // 停止播放GIF
38         }
39         public void PlayImage()
40         {
41             if(!current)
42             {
43                 ImageAnimator.Animate(bitmap,new EventHandler(this.OnFrameChanged));
44                 //调用Animate方法实现动态播放GIF动画
45                 current =true;
46                 //布尔变量current为真
47             }
48         }
49         private void OnFrameChanged(object o,EventArgs e)
50         {
51             this.Invalidate();
52         }
53         protected override void OnPaint(PaintEventArgs e)
54         {
55             e.Graphics.DrawImage(this.bitmap,new Point(20,20));
56             //绘出GIF动画
57             ImageAnimator.UpdateFrames();
58             //调用uodateframes方法
59         }
60     }
61 }

 

下载源码

转载请注明:于哲的博客 » C#每天抄一点(29):GIF