我有一个以最简单的方式显示动画 gif 的 WinForms 应用程序 - 有一个直接加载 .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 的速度?
最佳答案
我认为答案与图像相关而不是 C#。如果您在 GIMP 等工具中编辑该特定图像并查看图层,您会看到它由 10 个图层(帧)组成,但它们之间没有设置“延迟时间” - 它在图层的(0ms)属性。您可以编辑层的属性并通过右键单击它并在菜单中选择该选项来更改它。当然,最后您必须导出新图像并将其另存为 GIF,在选项中选择“动画”。
我相信在这种情况下(当没有指定帧之间的延迟时间时)网络浏览器和 C# PicutureBox 会强制使用它们自己的不同默认值。所以,如果你延迟 100 毫秒,就像描述的那样 here在第 3 步中,您将使动画放慢速度。
关于c# - 如何减慢动画gif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12043601/