c# - 如何在第一个循环 C# 后停止 PictureBox GIF 动画?

标签 c# windows animation

我将一个 GIF 动画放在 PictureBox 中,默认情况下我的动画是连续循环的。我需要在第一个循环后停止它,方法是执行此 pictureBox1.Enabled=false 或手动将 GIF 动画更改为该动画的最后一帧,但我如何才能捕捉到第一个循环结束的时刻?

我发现了这个问题(click),但我不明白我该如何使用它,任何人都可以说清楚或描述另一种方法吗?

最佳答案

解决方案是获取帧数,​​然后将事件添加到 picureBox.Paint 以检查已渲染了多少帧。一旦达到帧数,就可以禁用 pictureBox。

这里我做了一个简单的解决方案:

   int numberOfFrames = 0;
   int currentFrame = 0;
    public Form1()
    {
        InitializeComponent();
        pictureBox1.Paint += new PaintEventHandler(this.pictureBox1_Paint);

        FrameDimension dimension = new FrameDimension(this.pictureBox1.Image.FrameDimensionsList[0]);
        numberOfFrames = this.pictureBox1.Image.GetFrameCount(dimension);

    }

    private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
        if(currentFrame == numberOfFrames)
        {
            this.pictureBox1.Enabled = false;
        }
        currentFrame++;
    }

关于c# - 如何在第一个循环 C# 后停止 PictureBox GIF 动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53634678/

相关文章:

c# - 获取字典中不存在的 CloudBlockBlob 元数据键

c# - 使用 asp.net 将服务器证书导入 Keystore 以验证请求来自受信任的服务器

c++ - 为什么 std::remove for file 总是返回 -1?

linux - 在多个 Git 存储库之间共享 .mailmap 或其他顶级文件,跨平台

.NET:屏幕保护程序配置对话框所有者和预览焦点

ios - UIView animate withDuration 不会在 iOS 9.3.5 上调用完成处理程序

c# - 在向 C# Controller 操作发出 POST 请求之前会发生什么

jquery - 悬停时使用 fadeInUp 显示 div,鼠标悬停时显示 fadeOutDown

iphone - UIImageview 在 iOS7 中没有动画,但在 iOS6 中运行良好

c# - SendInput 到最小化的窗口