为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Windows窗体(c#)上显示动画GIF

如何在Windows窗体(c#)上显示动画GIF

C#
largeQ 2019-11-11 15:30:47
我有一个显示进度消息的表格,它显示了相当长的过程。这是对Web服务的调用,因此我无法真正在进度条上有意义地显示完成百分比。(我不太喜欢进度条的Marquee属性)我想展示一个动画GIF,以使该过程具有某种活动的感觉(例如,文件从一台计算机飞到另一台计算机,例如Windows复制过程)。你怎么做到这一点?
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

不太难。


将一个图片框拖放到您的窗体上。

将.gif文件作为图片添加到图片框中

加载时显示图片框。

要考虑的事项:


禁用图片框将阻止gif动画化。

GIF动画:


如果您正在寻找GIF动画,可以在此处生成它们


另一种方法是:


我发现效果很好的另一种方法是在代码项目中找到的异步对话框控件


查看完整回答
反对 回复 2019-11-11
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

我有同样的问题。整个表单(包括gif)由于在后台长时间运行而停止重绘自身。这是我解决这个问题的方法。


  private void MyThreadRoutine()

  {

   this.Invoke(this.ShowProgressGifDelegate);

   //your long running process

   System.Threading.Thread.Sleep(5000);

   this.Invoke(this.HideProgressGifDelegate);

  }


  private void button1_Click(object sender, EventArgs e)

  {

   ThreadStart myThreadStart = new ThreadStart(MyThreadRoutine);

   Thread myThread = new Thread(myThreadStart);

   myThread.Start(); 

  }

我只是创建了另一个线程来负责此操作。由于有了这种初始形式,所以可以继续重绘而不会出现问题(包括我的gif工作正常)。ShowProgressGifDelegate和HideProgressGifDelegate是将gif的pictureBox的可见属性设置为true / false的形式的委托。


查看完整回答
反对 回复 2019-11-11
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

请注意,在Windows中,传统上您不使用动画Gif,而是使用很少的AVI动画:有一个Windows本机控件仅用于显示它们。甚至还有将动画Gif转换为AVI的工具(反之亦然)。


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 1657 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信