2016-08-19 64 views
2

我对c#和windows窗体非常陌生。.gif中的动画未在窗口中显示形式

我正在尝试的是将一个PictureBox添加到一个Windows窗体并在显示窗体中的数据之前显示一个动画的.gif图像。

下面是图片框代码:

private System.Windows.Forms.PictureBox pictureBox1; 

      // 
      // pictureBox1 
      // 
      this.pictureBox1.BackColor = System.Drawing.SystemColors.AppWorkspace; 
      this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); 
      this.pictureBox1.Location = new System.Drawing.Point(374, 442); 
      this.pictureBox1.Name = "pictureBox1"; 
      this.pictureBox1.Size = new System.Drawing.Size(16, 16); 
      this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; 
      this.pictureBox1.TabIndex = 19; 
      this.pictureBox1.TabStop = false; 
      this.pictureBox1.Visible = false;     

现在,点击一个按钮的gif图片应该在图片框中加载。代码是这样的:

private void scanButton_Click(object sender, EventArgs e) 
     { 
      pictureBox1.Visible = true; 
      pictureBox1.Refresh(); 
     } 

现在,当我点击按钮“扫描按钮”,图像变得可见,但动画不工作。

请任何人都可以帮助我这里发生了什么?

谢谢!

+1

为了让您的.gif动画起作用,您的主(UI)线程应该是免费的。如果你正在主线程上执行任何进程,那么你将不会获得动画效果。 –

+0

您可能会觉得这篇文章有用:[显示透明加载微调上方其他控件](http://stackoverflow.com/questions/37220327/show-transparent-loading-spinner-above-other-controls) –

回答

0

只需将路径指定给ImageLocation中的图像即可。

pictureBox1.ImageLocation = "C:\\throbber.gif"; 

PictureBox就会明白,它的动画图像,并且发挥它。禁用PictureBoxForm将停止播放动画。

-1

如果您确实需要使用图片框,您可以迭代图片集合。但我强烈建议您使用web浏览器(介意它基本上是IE)

这会帮助你使用Windows所有动画形成 Simple animation using C#/Windows Forms

3

为了您的.gif注意动画的工作,你的主(UI)线程应自由。如果您正在主线程上执行任何进程,那么您将不会获得动画效果。

从你的问题,似乎你正在执行扫描操作点击按钮。这可能是问题所在。

为了摆脱这个问题,你必须确保你的主线程是空闲的,任何操作(如扫描)都应该在单独的线程上。