C# How to stop animated gif from continually loopi

2019-01-19 20:42发布

问题:

I have an event that gets called when my app uses the internet. The event changes an animated gif composed of 7 frames. How do I make it only loop through the frames only once?

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

回答1:

You could use the System.Drawing.ImageAnimator to start/stop the gif animation

// 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
}


回答2:

You could always encapsulate the image/gif inside a Picturebox, and when you want the gif to stop, just set the Enabled property of the Picturebox to false.

Just a thought.



回答3:

You can extract single frame from that GIF image (non - animated) when the progress event is done,

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

You can use this website to extract frame from gif : http://gif-explode.com/



回答4:

You can just use pictureBox.Enabled = false; if you want to stop the GIF & pictureBox.Enabled = true; when you want it to run the GIF.