Changement d'une image dans une pictureBox qui ne fonctionne pas

Résolu
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 14 juin 2006 à 09:16
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 14 juin 2006 à 11:50
Bonjour,

je réalise un logiciel de capture d'un flux MJPG d'une caméra IP.

Ce logiciel peut gérer plusieurs caméra. J'ai donc un affichage de 1x1 ou 2x2 ou 3x3 caméra.
Une caméra peut être affichée plusieur fois.
J'ai crée un userControl (panelCamContainerUserControl) dans lequel il y a une pictureBox pour afficher l'image de la caméra.
J'ai plusieurs dictionnaires pour savoir sur quel panel sont placé les caméras.

//les dictionnaires contenant la listes des caméra et des panels
        Dictionary<String, axisStreamMJPG> camList;
        Dictionary panelList;
       
//Les dictionnaires contenant la configuration des panels et des caméra
        Dictionary configPanels; //<numuro du Panel, nom de la caméra associée>
        Dictionary<String, ArrayList> configCameras;//<nom de la caméra, list des panels associés>

J'ai un evenement levé lors de la réception d'une nouvelle image. Je m'abonne a cet évènement et je réceptionne le nom de la caméra émetrice ainsi que l'image réceptionnée.

        void cam_newImg(string camName, Image img)
        {
            try
            {
               ArrayList numPanelList = configCameras[camName];
               foreach (int numPanel in numPanelList)
               {
                   panelList[numPanel].changePictureBoxImage(img);
               }
            }
            catch(Exception es)
            {
                MessageBox.Show(es.Message);
            }
        }

La fonction changePictureBoxImage ne fait que modifier l'image du pictureBox.
J'ai controlé, l'image et le nom de la caméra arrive bien à la fonction.
Apres le foreach, j'ai bien les numéros des bon panels.
La fonction changePictureBoxImage est bien appelée mais rien n'est modifier.

        public void changePictureBoxImage(Image img)
        {
            this.pictureBox1.Image = img;
            //MessageBox.Show("toto");
        }

Quelqu'un verrait une grosse erreur dans ce que j'ai fait ou une explication?

f.colo

1 réponse

cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
14 juin 2006 à 11:50
C'est bon, j'ai enfin trouvé mon erreur.
Le code présenté est bon mais, l'erreur vient du fait que, après modification de la form, je supprimé tout me controls et les recréer dans la nouvelle disposition. Donc les controle sauvegardé dans les dictionnaire ne pointés pas sur les bons, donc ca n'affiché rien.

f.colo
3
Rejoignez-nous