Gif Anime, Play & Stop

CodeIX Messages postés 60 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 28 novembre 2009 - 29 sept. 2009 à 08:20
CodeIX Messages postés 60 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 28 novembre 2009 - 29 sept. 2009 à 09:51
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

CodeIX Messages postés 60 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 28 novembre 2009
29 sept. 2009 à 09:43
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.
0
CodeIX Messages postés 60 Date d'inscription jeudi 30 avril 2009 Statut Membre Dernière intervention 28 novembre 2009
29 sept. 2009 à 09:51
Oops, oublier de mentionner que le PictureBox devais aussi etre "Enabled = False".
0
Rejoignez-nous