Как остановить анимацию PictureBox GIF после первого цикла C #? - PullRequest
0 голосов
/ 05 декабря 2018

Я помещаю GIF-анимацию в PictureBox, и по умолчанию моя анимация постоянно зацикливается.Мне нужно остановить его после первого цикла, выполнив это pictureBox1.Enabled=false, или вручную изменить анимацию GIF на последний кадр этой анимации, но как я могу поймать момент окончания первого цикла?

Я нашел этот вопрос ( click ), но я не понял, как я могу его использовать, может кто-нибудь прояснить или описать другой способ сделать это?

1 Ответ

0 голосов
/ 05 декабря 2018

Решение состоит в том, чтобы получить количество кадров, а затем добавить событие в 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++;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...