• Winform 显示Gif图片


    本文章是引用博客园——brave作者的,非常好用!!!保存下来,以备不时之需!

     

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Diagnostics;

    namespace DysncPicTest
    {
        public partial class Form1 : Form
        {
            private Image m_imgImage = null;
            private EventHandler m_evthdlAnimator = null;
            public Form1()
            {
                InitializeComponent();
                this.SetStyle(ControlStyles.UserPaint, true);
                this.SetStyle(ControlStyles.DoubleBuffer, true);
                this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);

                m_evthdlAnimator = new EventHandler(OnImageAnimate);
                Debug.Assert(m_evthdlAnimator != null);
            }

            protected override void OnPaint(PaintEventArgs e)
            {
                base.OnPaint(e);
                if (m_imgImage != null)
                {
                    UpdateImage();
                    e.Graphics.DrawImage(m_imgImage, new Rectangle(100, 100, m_imgImage.Width, m_imgImage.Height));
                }
            }

            protected override void OnLoad(EventArgs e)
            {
                base.OnLoad(e);
                m_imgImage = Image.FromFile("1.gif"); // 加载测试用的Gif图片
                BeginAnimate();
            }

            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                 if (m_imgImage != null)
                {
                    StopAnimate();
                    m_imgImage = null;
                }
            }

            private void BeginAnimate()
            {
               if (m_imgImage == null)
                    return;
            
               if (ImageAnimator.CanAnimate(m_imgImage))
               {
                    ImageAnimator.Animate(m_imgImage,m_evthdlAnimator);
               }
            }
     
            private void StopAnimate()
            {
                if (m_imgImage == null)
                    return;
     
                if (ImageAnimator.CanAnimate(m_imgImage))
                {
                    ImageAnimator.StopAnimate(m_imgImage,m_evthdlAnimator);
                }
            }
     
            private void UpdateImage()
            {
                if (m_imgImage == null)
                    return;
     
                if (ImageAnimator.CanAnimate(m_imgImage))
                {
                    ImageAnimator.UpdateFrames(m_imgImage);
                }
            }

            private void OnImageAnimate(Object sender,EventArgs e)
            {
                this.Invalidate();
            }

            private void Form1_Load(object sender, EventArgs e)
            {

            }
        }
    }

  • 相关阅读:
    从零开始系统深入学习android(实践让我们开始写代码Android框架学习4.Intents和Intent Filters)
    第二部分:开发简要指南第五章 支持不同的Android设备
    从零开始系统深入学习android(实践让我们开始写代码Android框架学习2.service)
    从零开始系统深入学习android(实践让我们开始写代码Android框架学习5.Android中的进程与线程)
    第二部分:开发简要指南第四章 Activity的生命周期
    从零开始系统深入学习android(实践让我们开始写代码Android框架学习6.权限(Permissions))
    第三部分:Android 应用程序接口指南第一节:应用程序组件第一章1.Activity
    让青春在绚丽的季节怒放!
    不写诗歌好多年
    成大事者的气质与风范(转)
  • 原文地址:https://www.cnblogs.com/hbliu_ren/p/1297836.html
Copyright © 2020-2023  润新知