Search code examples
c#imagewinformsgifanimated-gif

How to show a specific frame of a GIF image in C#?


I want to show a frame of a gif image. I searched and found that the following code should work, but it doesn't work. it detects the number of frames correctly but it shows the whole frames of gif instead of the specified frame. thanks everybody.

Image[] frames = new Image[36];
Image GG = Image.FromFile(@"C:\Users\Administrator\TEST C#\TEST2frame2\chef.gif");
FrameDimension dimension = new FrameDimension(GG.FrameDimensionsList[0]);
            // Number of frames
int frameCount = GG.GetFrameCount(dimension);
label1.Text = frameCount.ToString();

            // Return an Image at a certain index
GG.SelectActiveFrame(dimension, 1);
frames[1] = ((Image)GG.Clone());
pictureBox1.Image = frames[1];

Solution

  • Use your own code up until the call of SelectActiveFrame() and after that change to this lines:

    frames[0] = new Bitmap(GG);
    pictureBox1.Image = frame[0];
    

    This should do the trick. Please do not forget do dispose the created Images.