Winform 显示Gif图片

代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9 using System.Diagnostics;
10 
11 namespace DysncPicTest
12 {
13     public partial class Form1 : Form
14     {
15         private Image m_imgImage = null;
16         private EventHandler m_evthdlAnimator = null;
17         public Form1()
18         {
19             InitializeComponent();
20             this.SetStyle(ControlStyles.UserPaint, true);
21             this.SetStyle(ControlStyles.DoubleBuffer, true);
22             this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
23 
24             m_evthdlAnimator = new EventHandler(OnImageAnimate);
25             Debug.Assert(m_evthdlAnimator != null);
26          // http://www.cnblogs.com/sosoft/
27         }
28 
29         protected override void OnPaint(PaintEventArgs e)
30         {
31             base.OnPaint(e);
32             if (m_imgImage != null)
33             {
34                 UpdateImage();
35                 e.Graphics.DrawImage(m_imgImage, new Rectangle(100, 100, m_imgImage.Width, m_imgImage.Height));
36             }
37         }
38 
39         protected override void OnLoad(EventArgs e)
40         {
41             base.OnLoad(e);
42             m_imgImage = Image.FromFile("1.gif"); // 加载测试用的Gif图片
43             BeginAnimate();
44         }
45 
46         private void Form1_FormClosing(object sender, FormClosingEventArgs e)
47         {
48              if (m_imgImage != null)
49             {
50                 StopAnimate();
51                 m_imgImage = null;
52             }
53         }
54 
55         private void BeginAnimate()
56         {
57            if (m_imgImage == null)
58                 return;
59          
60            if (ImageAnimator.CanAnimate(m_imgImage))
61            {
62                 ImageAnimator.Animate(m_imgImage,m_evthdlAnimator);
63            }
64         }
65  
66         private void StopAnimate()
67         {
68             if (m_imgImage == null)
69                 return;
70  
71             if (ImageAnimator.CanAnimate(m_imgImage))
72             {
73                 ImageAnimator.StopAnimate(m_imgImage,m_evthdlAnimator);
74             }
75         }
76  
77         private void UpdateImage()
78         {
79             if (m_imgImage == null)
80                 return;
81  
82             if (ImageAnimator.CanAnimate(m_imgImage))
83             {
84                 ImageAnimator.UpdateFrames(m_imgImage);
85             }
86         }
87 
88         private void OnImageAnimate(Object sender,EventArgs e)
89         {
90             this.Invalidate(); 
91         }
92 
93         private void Form1_Load(object sender, EventArgs e)
94         {
95 
96         }
97     }
98 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值