Parcourir un tableau en C#.net

Signaler
Messages postés
26
Date d'inscription
jeudi 1 mars 2007
Statut
Membre
Dernière intervention
16 octobre 2011
-
Messages postés
18
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
10 février 2009
-
Bonjour,
Je veut parcourir un tableau d'image , voila l'algorithme que j'ai écrit:
namespace Test1
{
    public class Image_control : UserControl  
    {
        bool activer = false;
        public Timer t;
        ComponentResourceManager resources = new ComponentResourceManager(typeof(Image_control));
        Image[] im = new Image[5];
       
        public Image_control()
        {
            im[0] = (Image)resources.GetObject("image1");
            im[1] = (Image)resources.GetObject("image2");
            im[2] = (Image)resources.GetObject("image3");
            im[3] = (Image)resources.GetObject("image4");
            im[4] = (Image)resources.GetObject("image5");

            this.BackgroundImage = im[0];
            t = new Timer();
            t.Interval = 500;
            t.Tick += new System.EventHandler(t_Tick);          
        }
        void t_Tick(object o, System.EventArgs e)
        {
            BackgroundImage = im[0];
            int k ;
            for (k = 1; k < 5; k + +)
            {
                if (BackgroundImage == im[k])
                    BackgroundImage = im[k + 1];
            }                      
        }

        bool ACTIVER
        {
            get
            {
                return activer;
            }
            set
            {
                activer = value;
                if (activer)
                    t.Start();
                else
                    t.Stop();
            }
        }

        private void InitializeComponent()
        {
            this.SuspendLayout();
            //
            // Image_control
            //
            this.BackColor = System.Drawing.Color.Transparent;
            this.Name = "Image_control";
            this.Size = new System.Drawing.Size(411, 374);
            this.ResumeLayout(false);

        }
    }
}
Merci a tous ce qui peut m'aider a resoudre mon programme.

7 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
48
Bonsoir,
Et quel est le problème?
Sinon, c'est la nouvelle mode de mettre des properties en toutes lettres et sans spécifier la portée ?

<hr />
-Blog-
-Site Perso-
Messages postés
26
Date d'inscription
jeudi 1 mars 2007
Statut
Membre
Dernière intervention
16 octobre 2011

Bonsoir,
voila la ou le probleme:
void t_Tick(object o, System.EventArgs e)
        {
            BackgroundImage = im[0];
            int k ;
            for (k = 1; k < 5; k + +)
            {
                if (BackgroundImage == im[k])
                    BackgroundImage = im[k + 1];
            }                      
        }
je ne trouve pas le resultat voulu, il affiche seulement les 2 premiers images.
Messages postés
102
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 janvier 2013

Je pense ne pas dire de bêtises mais c'est normal je crois :

tu test ton BackgroundImage si il est égal à im[k] or k est à 1 et ton premier  BackgroundImage à 0 donc tu saute une ligne

essai :

void t_Tick(object o, System.EventArgs e)
        {
            BackgroundImage = im[0];          
            for (int k = 0; k < 5; k + +)
            {
                if (BackgroundImage == im[k])
                    BackgroundImage = im[k + 1];
            }                      
        }

j'èspere que c'est bien çà.
Messages postés
102
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 janvier 2013

Question qui ne t'aideras pas mais je suis curieux :
Tu veux faire un .gif en background ???
Messages postés
26
Date d'inscription
jeudi 1 mars 2007
Statut
Membre
Dernière intervention
16 octobre 2011

j'ai fait un gif en background, mon but est de trouver un moyen permettant de changer les gif, chaque fois je trouve un nouveau gif après un timer comme un album.
Messages postés
102
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
24 janvier 2013

Daccord, sinon çà fonctionne maintenant avec ce que je t'ai dit?
Messages postés
18
Date d'inscription
vendredi 15 avril 2005
Statut
Membre
Dernière intervention
10 février 2009

private int _imageIndex = 0;

void t_Tick(object o, System.EventArgs e)
{
_imageIndex = (_imageIndex +1) %5;
this.BackgroundImage = im[_imageIndex];
}

En meme temps, le BackGroundImage va etre serialisé avec la form sur lequel il est posé et c'est pas cool !

Ajoute au moins un :
private bool ShouldSerializeBackGroundImage()
{
return false;
}

Sinon le mieux est d'implementer ISupportInitialize et de déplacer le code du constructeur vers le EndInit avec un test sur DesignMode...

Puis attention : Timer est IDisposable.... il faut faire un Dispose dessus !!!
Le plus simple est d'ajouter le Timer au controle à partir de la ToolBox...

Et effectivement "public bool Activer" ca fait plus serieux que "bool ACTIVER"....

A+

Fabrice