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

时间:2018-12-05 14:36:08

标签: c# windows animation

我将GIF动画放在PictureBox内,默认情况下,我的动画不断循环播放。我需要在第一个循环之后通过执行pictureBox1.Enabled=false来停止它,或手动将GIF动画更改为该动画的最后一帧,但是我如何捕捉到第一个循环结束的时刻?

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

1 个答案:

答案 0 :(得分:1)

解决方案是获取帧数,​​然后将一个事件添加到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++;
    }