当前位置:优德中文版 > 外国军情 > WinForm上显示gif动画[转]

WinForm上显示gif动画[转]

文章作者:外国军情 上传时间:2019-10-07

工具可以重新定义时间和成本  --叶武滨老师

WinForm上显示gif动画

      WinForm上的ProgressBar,老实说,实在是不敢恭维,太死板,太难看了,即使做成实时显示处理进度的,它还是逃离不了“难看”。现在的web2.0上到处都能看到一个显示正在处理的小圆圈在那转啊转,以表示正在处理,虽然它不是实时的,只是个gif动画,但它的效果总感觉要比winform上的progressBar要赏心悦目的多。那我在winform 上是否也可以用这种gif动画来显示处理进度呢?答案是显然的,肯定可以,听说pictureBox就可以显示gif动画,只要把该控件的image属性设置成我们所指的gif动画就可以了,编译,运行,噢,gif动画罢工了,它根本就没有动起来,只是停留在某一帧。看来这种走捷径的方式在IT民工业是行不通的。

      那我们还是用ImageAnimator.Animate()方法吧,发现语言组织不起来,还是用直接看代码来的快,越来越觉得自己可悲了。。。。话都说不清楚。。。

图片 1图片 2代码

//首先定义私有变量 

private Image m_img=null;

private EventHandler evtHandler=null;

//重载的当前winform的OnPaint方法,当界面被重绘时去显示当前gif显示某一帧

protected override void OnPaint(PaintEventArgs e)

{

    base.OnPaint(e);

    if (m_Image != null)

    {

        //获得当前gif动画下一步要渲染的帧。

        UpdateImage();

        //将获得的当前gif动画需要渲染的帧显示在界面上的某个位置。

        e.Graphics.DrawImage(m_Image, new Rectangle(145, 140, m_Image.Width, m_Image.Height));

    }

}

//实现Load方法

private Load(object sender,EventArgs e)

{

    //为委托关联一个处理方法

    evtHandler=new EventHandler(OnImageAnimate);

    //获取要加载的gif动画文件

    m_img=Image.FromFile(Application.StartupPath+"\loading.gif");

    //调用开始动画方法

    BeginAnimate();

}

//开始动画方法

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

}

//关闭显示动画,该方法可以在winform关闭时,或者某个按钮的触发事件中进行调用,以停止渲染当前gif动画。

private void StopAnimate()

{

    m_Image = null;

    ImageAnimator.StopAnimate(m_Image,evtHandler);

}

      终于可以看到gif动画了,如果动画左侧或者上沿再标上一段文字"loading....",这不是和web2,0的效果一样的了么,但是实现起来却复杂的许多。。。

转自:

在践行学习PPT的过程中,我和很多小伙伴遇到了将PPT动画转换为gif动图的问题,一个解决方法是将动画保存为视频格式,再用格式工厂将视频转换为gif。这样的过程,一来繁琐,gif体积大,清晰度差,也对相关编辑有限制

给大家分享一个小软件,很完美解决以上问题。

Gifcam

安装

英文版下载网址:http://www.duote.com/soft/22585.html

中文版下载网址:http://www.pc6.com/softview/SoftView_91910.html

软件很小,直接就是exe文件

具体操作

安装完成后,简单认识下软件,它的界面非常简洁,总共有以下几个部分,见下图

录制框区域

可选择部分/全部动画进行录制,很方便调整大小

连续录制按钮

可以选择帧率(默认为1秒10/16/33帧三个选项,可设置);可选择全屏录制;可选择鼠标捕捉

gif编辑按钮

录制完成后,可对刚录制的gif进行编辑,如删除首尾帧,添加文字,等等

保存按钮

确认无误,保存既可

Gifcam软件界面

连续录制按钮子菜单

其它

在使用gifcam录制全屏时,软件界面会始终在窗口前显示,需要手动将其最小 化,保存终版gif前可以将首尾帖删掉既可

本文由优德中文版发布于外国军情,转载请注明出处:WinForm上显示gif动画[转]

关键词: