zoukankan      html  css  js  c++  java
  • 【Winform 动图】winform窗体显示动图

    源地址忘记了

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

  • 相关阅读:
    List<T>Find方法,FindAll方法,Contains方法,Equals方法
    C#SerialPort如何读取串口数据并显示在TextBox上
    49、css属性相关
    40、协程
    45、mysql 储存过程
    37、进程之间的通信
    38、线程及其方法
    39、多线程和线程池
    33、验证客户端的合法性、socketserver模块
    32、黏包的解决方式、struct模块
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/12539181.html
Copyright © 2011-2022 走看看