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

        }

    }
}
时间: 2024-10-18 00:10:28

winfrom播放动态图片的相关文章

IOS 播放动态Gif图片

图片分为静态和动态两种,图片的格式有很多种,在开发中比较常见的是.png和.jpg的静态图片,但有的时候在App中需要播放动态图片,比如.gif格式的小表情头像,在IOS中并没有提供直接显示动态图片的控件,下面就介绍几种显示动态图片的方式. <一>  UIImageView用来显示图片, 使用UIImageView中的动画数组来实现图片的动画效果 //创建UIImageView,添加到界面 UIImageView *imageView = [[UIImageView alloc] initWi

iOS播放动态GIF图片

<转> 图片分为静态和动态两种,图片的格式有很多种,在开发中比较常见的是.png和.jpg的静态图片,但有的时候在App中需要播放动态图片,比如.gif格式的小表情头像,在IOS中并没有提供直接显示动态图片的控件,下面就介绍几种显示动态图片的方式. <一>  UIImageView用来显示图片, 使用UIImageView中的动画数组来实现图片的动画效果 //创建UIImageView,添加到界面 UIImageView *imageView = [[UIImageView all

动态图片显示控件----------WinForm控件开发系列

PictureBox控件无法显示gif格式的图片,该控件利用.NET自带ImageAnimator类来处理图片的帧. /// <summary> /// 动态图片显示控件 /// </summary> [ToolboxItem(true)] [DefaultProperty("Image")] [Description("动态图片显示控件")] public partial class AnimationImageExt : Control

展示动态图片(播放一组图片)

//展示动态图片(播放一组图片)    //创建做动画的图片,存储到数组中    NSMutableArray * animationImages = [NSMutableArray array];    for (int i = 0 ; i < 7 ; i ++) {        UIImage * image1 = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString string

动态图片 gif

简介 android不推荐使用gif图片,一般都是png的,对于gif的图片解析比较消耗资源,但是对于一些动态gif图片的播放,如果比较小的话还是可以的,要是大的话,建议还是把gif图片转换成一帧一帧的png图片,然后通过animation播放. 对于小的gif动态图片,可以通过Movie来播放. 注意,不能再布局中以自定义view的形式使用. Activity public class MainActivity extends Activity {     LinearLayout root;

如何在html5的canvas画布中绘制gif动态图片

我们都知道如何在html5的canvas画布上绘制静态图片(jpeg, png等),直接用canvas中的drawImage方法即可,那么如何绘制动态图片(gif)? 相信大家都知道动态图片之所以动态,是因为它是由很多图片按一定的帧数顺序播放而成的,因此我们是否也可以模拟这样的帧数,每隔一定的时间重新 绘制图片,就能画出动态图片呢?答案当然是YES.下面就是我自己测试的一个例子,代码如下: 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 &l

【Mac】使用PicGIF制作gif动态图片

动态图片是我们常常需要的,mac系统下制作gif图片,可以使用PicGIF,AppStore中有一个简单版本免费的 环境与工具 1.mac系统 2.PicGIF Lite(可以在AppStore下载) 使用方法 1.下载并装好PicGIF Lite后,打开软件 2.选择添加图片(也可以添加视频),并添加图片 3.设置gif图片的属性,以及特效 4.设置完成,点击播放,预览效果 5.生成gif图片,并保存 作品

QT在界面中显示动态图片

我的这个方法是在界面中添加一个label 然后在label中显示GIF图片,且动态图片大小会和label大小一样 第一步先添加一个资源文件 然后把你想要播放的动态图片添加到资源文件中 然后在界面中添加一个label控件,剩下的就要写代码了 #include "widget.h" #include "ui_widget.h" #include <QMovie> Widget::Widget(QWidget *parent) : QWidget(parent

atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js

atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js 1. 图片按钮的效果总结 1 1.1. 按钮图片自动缩放的. 1 1.2. 不要边框,如果用自定义图片做按钮背景可以设为 false. 2 1.3. 异形按钮 2 1.4. 不绘制焦点 2 1.5. 鼠标经过时的图标 2 1.6. 选中时的图标 2 1.7. 禁用时显示的图标 2 1.8. 可能需要按钮半透明效果 2 2. 图片按钮的实现 2 2.1. 优先模式:button控