VS2010中如何给窗体中添加GIF图片文件

lixin920222 2011-11-21 05:50:53
我就是想在一个窗体上添加一个GIF图片,让它能闪动的!可是我用PictrueBox添加了gif图片,它就是不动啊......

求高手给个简单的实现方法,我是新手,刚开始学习WINFORM,望理解,呵呵..........
...全文
708 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
assky124 2011-11-21
  • 打赏
  • 举报
回复
用Label试试
宝_爸 2011-11-21
  • 打赏
  • 举报
回复
PictureBox支持Gif的,在designer中是不动的,运行起来就动了

我用下面的图片试过了,可以的。
绿领巾童鞋 2011-11-21
  • 打赏
  • 举报
回复
//首先定义私有变量

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

}
effun 2011-11-21
  • 打赏
  • 举报
回复
试试用System.Drawing.ImageAnimator类来处理动画吧,参考MSDN。
http://msdn.microsoft.com/zh-cn/library/system.drawing.imageanimator(v=vs.80).aspx

111,116

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧