Gif Anime, Play & Stop

Signaler
Messages postés
60
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
28 novembre 2009
-
Messages postés
60
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
28 novembre 2009
-
Bonjour,
je suis actuellement a la recherche de savoir comment arreter un gif animer.

Voila, j'ai un picturebox dans lequel je load un gif anime de 60 frames, j'aimerais qu'au Form Load il affiche la Frame "1" et sur le click d'un button il avance ou recule d'une frame a la fois et l'affiche.

Je suis capable de loader le gif animer sans probleme mais il loop continuellement. Et si j'essaie de specifier un frame a aller chercher le cube "reset" mais continue de looper.

Merci d'avance!

Jusqu'a maintenant voici mon code:

Variables
GifImage gi = new GifImage(@".\Hexahedron.gif");


Sur Form Load j'ai
pictureBox1.Image = gi.GetFrame(1);


et sur un click de button j'ai
pictureBox1.Image = gi.GetNextFrame();



using System.Drawing;
using System.Drawing.Imaging;

public class GifImage
{
    private Image gifImage;
    private FrameDimension dimension;
    private int frameCount;
    private int currentFrame = -1;
    private bool reverse;
    private int step = 1;

    public GifImage(string path)
    {
        gifImage = Image.FromFile(path); //initialize
        dimension = new FrameDimension(gifImage.FrameDimensionsList[0]); 
        frameCount = gifImage.GetFrameCount(dimension); 
    }

    public bool ReverseAtEnd 
    {
        get { return reverse; }
        set { reverse = value; }
    }

    public Image GetNextFrame()
    {

        currentFrame += step;

        if (currentFrame >= frameCount || currentFrame < 1)
        {
            if (reverse)
            {
                step *= -1; 
                currentFrame += step;
            }
            else
                currentFrame = 0; 
        }
        return GetFrame(currentFrame);
    }

    public Image GetFrame(int index)
    {
        gifImage.SelectActiveFrame(dimension, index);
        return (Image)gifImage.Clone();
    }
}

2 réponses

Messages postés
60
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
28 novembre 2009

J'ai trouver une solution, c'est d'appliquer la frame au backgroundimage de mon picturebox et non pas a la propriété image.

Par contre ca me semble un peu barbare, donc si vous avez de meilleur solutions je suis preneur.
Messages postés
60
Date d'inscription
jeudi 30 avril 2009
Statut
Membre
Dernière intervention
28 novembre 2009

Oops, oublier de mentionner que le PictureBox devais aussi etre "Enabled = False".