【发布时间】:2012-08-16 03:12:53
【问题描述】:
我有一个 WinForms 应用程序,它以最简单的方式显示动画 gif - 有一个直接加载 .gif 的 PictureBox。
WinForms 设计器生成的代码如下所示:
//
// pictureBoxHomer
//
this.pictureBoxHomer.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
this.pictureBoxHomer.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBoxHomer.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxHomer.Image")));
this.pictureBoxHomer.Location = new System.Drawing.Point(3, 3);
this.pictureBoxHomer.Name = "pictureBoxHomer";
this.pictureBoxHomer.Size = new System.Drawing.Size(905, 321);
this.pictureBoxHomer.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
this.pictureBoxHomer.TabIndex = 0;
this.pictureBoxHomer.TabStop = false;
图片当然是这个:http://media.tumblr.com/tumblr_m1di1xvwTe1qz97bf.gif
问题:虽然这个动画 gif 在浏览器中显示得非常好,但在 WinForms 应用程序中运行速度太快了,这并不像需要的那样快乐。所以:
问题:有没有办法让 WinForms 应用程序中的 gif 动画变慢?
【问题讨论】:
-
浏览器可能将 gif 限制为指定的 FPS。 Windows 运行它的速度可能与机器可以处理下一帧的速度一样快。
-
@Stieffers IIRC,GIF 格式允许在每一帧中指定帧时间。至少,一些编辑会这样做。 winforms 会忽略这一点似乎很奇怪,但也许确实如此?
-
我不确定 Winforms 的复杂性,但我非常怀疑 Winforms 会为它加载的每个 GIF 图像创建一个新线程,这意味着它会尽可能避免渲染下一帧事件委托中的任何小插曲。