C# как остановить анимированный gif от непрерывного цикла

У меня есть событие, которое вызывается, когда приложение использует интернет. Событие изменяет анимированный gif, состоящий из 7 кадров. Как сделать так, чтобы он проходил через рамки только один раз?

        private void trafficSendingActive(object sender, trafficEventArgs e)
        {
            txImage.Image = Properties.Resources.blip;
        }

4 ответов


можно использовать System.Drawing.ImageAnimator для запуска / остановки gif анимации

// start
System.Drawing.ImageAnimator.Animate(txImage.Image, OnFrameChanged);

// stop
System.Drawing.ImageAnimator.StopAnimate(txImage.Image, OnFrameChanged);

private void OnFrameChanged(object sender, EventArgs e)
{
   // frame change
}

вы всегда можете инкапсулировать изображение / gif внутри Picturebox, и когда вы хотите, чтобы gif остановился, просто установите свойство Enabled Picturebox в false.

просто мысли.


вы можете извлечь один кадр из этого GIF изображение (без анимации), когда событие прогресса сделано,

txImage.Image = Image.FormFile("non-animated-frame-from-gif.jpg");

вы можете использовать этот веб-сайт для извлечения кадра из gif:http://gif-explode.com/


Вы можете просто использовать pictureBox.Enabled = false; Если вы хотите остановить GIF&pictureBox.Enabled = true; когда вы хотите, чтобы запустить GIF.