Parcourir un tableau en C#.net

hamadi_424 Messages postés 26 Date d'inscription jeudi 1 mars 2007 Statut Membre Dernière intervention 16 octobre 2011 - 27 janv. 2009 à 19:08
fcaruso Messages postés 18 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 10 février 2009 - 2 févr. 2009 à 20:54
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

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
27 janv. 2009 à 21:41
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-
0
hamadi_424 Messages postés 26 Date d'inscription jeudi 1 mars 2007 Statut Membre Dernière intervention 16 octobre 2011
27 janv. 2009 à 21:48
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.
0
cs_vagg Messages postés 102 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 janvier 2013
28 janv. 2009 à 09:24
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 çà.
0
cs_vagg Messages postés 102 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 janvier 2013
28 janv. 2009 à 09:29
Question qui ne t'aideras pas mais je suis curieux :
Tu veux faire un .gif en background ???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hamadi_424 Messages postés 26 Date d'inscription jeudi 1 mars 2007 Statut Membre Dernière intervention 16 octobre 2011
28 janv. 2009 à 11:11
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.
0
cs_vagg Messages postés 102 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 24 janvier 2013
28 janv. 2009 à 11:22
Daccord, sinon çà fonctionne maintenant avec ce que je t'ai dit?
0
fcaruso Messages postés 18 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 10 février 2009
2 févr. 2009 à 20:54
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
0
Rejoignez-nous