stackoverflow
stackoverflow

Reputation: 19444

C# How to stop animated gif from continually looping

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

Upvotes: 6

Views: 13288

Answers (4)

Sean
Sean

Reputation: 41

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.

Upvotes: 4

sa_ddam213
sa_ddam213

Reputation: 43596

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
}

Upvotes: 6

Benny O'Neill
Benny O'Neill

Reputation: 208

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.

Upvotes: 7

Parimal Raj
Parimal Raj

Reputation: 20575

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/

Upvotes: 6

Related Questions