Winform 显示Gif图片的实例代码

时间:2021-06-29 21:14:44 


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)
        {

        }
    }
}        

标签:Winform,Gif图片
0
投稿

猜你喜欢

  • Java 实战项目之毕业设计管理系统的实现流程

    2021-12-26 00:10:10
  • Java如何实现定时任务

    2021-11-07 02:57:38
  • Android使用Websocket实现聊天室

    2023-07-07 13:01:59
  • 你所不知道的Spring自动注入详解

    2021-09-04 19:30:08
  • 详解SpringBoot禁用Swagger的三种方式

    2022-02-28 23:49:08
  • Spring AOP原理及动态代理

    2023-06-19 18:59:56
  • Springmvc ResponseBody响应json数据实现过程

    2022-06-12 15:22:30
  • java8 forEach结合Lambda表达式遍历 List操作

    2021-07-04 07:22:55
  • Java中过滤器 (Filter) 和 拦截器 (Interceptor)的使用

    2023-07-07 00:20:28
  • 关于RedisTemplate之opsForValue的使用说明

    2023-07-09 16:53:04
  • 基于Spring Mvc实现的Excel文件上传下载示例

    2022-01-22 02:02:56
  • Java关于IO流的全面介绍

    2023-08-12 08:14:46
  • JAVA生成短8位UUID的实例讲解

    2021-08-21 04:26:19
  • java中超过long范围的超大整数相加算法详解(面试高频)

    2022-09-15 11:22:05
  • 在IntelliJ IDEA中多线程并发代码的调试方法详解

    2022-01-09 03:05:45
  • Java语言读取配置文件config.properties的方法讲解

    2023-09-29 14:45:51
  • @RequestBody,@RequestParam和@Param的区别说明

    2023-07-20 06:29:03
  • mybatis in查询条件过长的解决方案

    2022-06-08 12:44:14
  • web 容器的设计如何实现

    2022-04-07 00:29:51
  • springboot2.0如何通过fastdfs实现文件分布式上传

    2022-03-20 16:49:24
  • asp之家 软件编程 m.aspxhome.com