zoukankan      html  css  js  c++  java
  • winfrom播放动态图片

    winfrom是不能直接加载的动态图片的。只能够自己写方法实现。

    具体代码如下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WinLibraryDemo
    {
        public partial class Form2 : Form
        {
            //首先定义私有变量 
    
            private Image m_img = null;
    
            private EventHandler evtHandler = null;
            public Form2()
            {
                InitializeComponent();
            }
    
            private void Form2_Load(object sender, EventArgs e)
            {
              //设置透明的背景色
                this.BackColor = Color.White;
                this.TransparencyKey = Color.White;
                //无标题栏
                this.FormBorderStyle = FormBorderStyle.None;
                //为委托关联一个处理方法
                evtHandler = new EventHandler(OnImageAnimate);
    
                //获取要加载的gif动画文件
    
                m_img = Image.FromFile(@"C:123.gif");
    
                //调用开始动画方法
    
                BeginAnimate();
    
            }
            protected override void OnPaint(PaintEventArgs e)
            {
    
                base.OnPaint(e);
    
                if (m_img != null)
                {
    
                    //获得当前gif动画下一步要渲染的帧。
    
                    UpdateImage();
    
                    //将获得的当前gif动画需要渲染的帧显示在界面上的某个位置。
    
                    e.Graphics.DrawImage(m_img, new Rectangle(145, 140, m_img.Width, m_img.Height));
    
                }
    
            }
            //开始动画方法
    
            private void BeginAnimate()
            {
    
                if (m_img != null)
                {
    
                    //当gif动画每隔一定时间后,都会变换一帧,那么就会触发一事件,该方法就是将当前image每变换一帧时,都会调用当前这个委托所关联的方法。
    
                    ImageAnimator.Animate(m_img, evtHandler);
    
                }
    
            }
    
            //委托所关联的方法
    
            private void OnImageAnimate(Object sender, EventArgs e)
            {
    
                //该方法中,只是使得当前这个winfor重绘,然后去调用该winform的OnPaint()方法进行重绘)
    
                this.Invalidate();
    
            }
    
            //获得当前gif动画的下一步需要渲染的帧,当下一步任何对当前gif动画的操作都是对该帧进行操作)
    
            private void UpdateImage()
            {
    
                ImageAnimator.UpdateFrames(m_img);
    
            }
    
            //关闭显示动画,该方法可以在winform关闭时,或者某个按钮的触发事件中进行调用,以停止渲染当前gif动画。
    
            private void StopAnimate()
            {
    
                m_img = null;
    
                ImageAnimator.StopAnimate(m_img, evtHandler);
    
            }
    
    
    
        }
    }
    
  • 相关阅读:
    IDEA快捷键收集
    Jmeter录制HTTPS
    Jmeter 线程组、运行次数参数化
    fiddler 抓取iphone发出的http和https包
    Appium 点击屏幕
    安卓程序如何保证低内存下依然存在
    listview
    数据库操作
    数据存储
    测试
  • 原文地址:https://www.cnblogs.com/liuruitao/p/4280897.html
Copyright © 2011-2022 走看看