IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Windows Form et images


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Par défaut Windows Form et images
    Bonjour à tous,

    J'ai un probleme avec Windows form et utilisation des images.
    J'ai une application en c#, je voulais afficher des images dans un PictureBox du form. Je veux que les images s'affichent automatiquement au tour de rôle. c'est-à-dire en cliquant sur un bouton, je veux lancer une série d'images qui se trouve dans repertoire dans mon disque. Chaque image doit durer à PictureBox, par exemple, 5 seconde et une autre image doit la replacer apres l'expiration de ce délai. Pour cela j'ai crée un form avec un bouton (ayant comme nom btnLire) et un pictureBox (pBox comme nom).
    J'ai ajouté aussi au form un bouton de controle Timer de la boite à outils avec nom=timer1 et interval=5000.

    Pour coder les choses j'ai sous le le bouton btnLire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
        private void btnLire_Click(object sender, EventArgs e)
            {
     //Pour chercher le repertoire des images.
    FolderBrowserDialog fbd = new FolderBrowserDialog();
                if(fbd.ShowDialog()==DialogResult.OK)
                {
                        DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);
     
    //Pour lire les images les unes apres les autres
                        foreach (FileInfo fi in di.GetFiles())
                        {
                          // Pour renouveller le timer pour chaque fichier image
                           timer1 = new System.Windows.Forms.Timer();
                            timer1.Interval = 5000;
     
                            timer1.Enabled = true;
                            //À appeler apres toutes les 5 s.               
                           timer1.Tick += new System.EventHandler(timer1_tick);
     
                        }
     
                }
        }
    J'ai aussi pour l'evenement Tick du timer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    private void timer1_tick(object sender, EventArgs e)
            {
                pBox.ImageLocation = //?????
            }
    Je pense que pBox.ImageLocation doit recevoir le chemin des fichiers images les unes apres les autres apres que le délai de 5 seconde prenne fin.
    Le chemin doit etre comme fi.FullName

    Donc, pour etre plus claire, je voudrais afficher les images qui se trouvent dans le reperctoire selectionné dans la premiere methode (par le clik du btnLire) par l'utilisateur en succession au PictureBox (pBox) où chaque image doit etre remplacée par la suivante apres les 5 s.

    Voilà mon souci, quelqu'un peut-il m'aider?

    Merci a l'avance pour vos aides.

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Tu crée un timer par fichier, c'est inutile. Il suffit d'un seul. Mets le chemin des fichiers images dans une liste et crée ton timer. A chaque appel du timer, prend l'élément suivant dans la liste et mets le dans le imagelocation.

    Juste faire attention que tu sois bien sur le thread UI. Peut être que form.timer est plus facile dans ton cas. Comparaison des différents timer ici : http://msdn.microsoft.com/en-us/magazine/cc164015.aspx

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Par défaut
    Merci à GuruuMeditation mais j'ai encore une difficulté.

    J'ai declé ma liste List<string> cheminImage = new List<string>() dans la public partial class Form1 : Form pour qu'elle soit accessible partout.

    dans ma methode btnLire je la faite:

    FolderBrowserDialog fbd = new FolderBrowserDialog();
    if(fbd.ShowDialog()==DialogResult.OK)
    {
    DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);

    timer1 = new System.Windows.Forms.Timer();

    foreach (FileInfo fi in di.GetFiles())
    {
    // ajouter le chemin de chaque fichier a la liste
    cheminImage.Add(fi.FullName);

    timer1.Interval = 5000;

    timer1.Enabled = true;

    timer1.Tick += new System.EventHandler(timer1_tick);


    Alors dans la timer_tick, je n'arrive à acceder à l'element suivant dans la liste.

    Connaissez-une une methode plus générale permetant acceder à l'element suivant dans liste?

    Merci tous.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2011
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 51
    Par défaut
    bonjour,
    t'as qu'as rajouter une variable index ( int )
    en suite tu fait le traitement de cheminImage[index] et uen fois t'as terminer ce traitement tu fait index++ pour passé a l’élément suivant

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Par défaut
    Merci à tous ceux qui ont paticiper à la resolution de mon probleme.
    J'ai laissé l'idée de l'utilisation de Timer et je me suis servi à un Thread qui m'a permit de resoudre le problème.

    Donc,je n'ai qu'à marqué le sujet comme resolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET] Partager un dataset entre 2 windows forms ???
    Par kissskoool dans le forum Windows Forms
    Réponses: 11
    Dernier message: 26/07/2005, 11h34
  2. [FORMS] Champ image non basé
    Par macharius dans le forum Forms
    Réponses: 5
    Dernier message: 08/03/2005, 17h04
  3. [debutant VC++ et C++] Windows form et OPENFILENAME
    Par Le Scandinave dans le forum MFC
    Réponses: 5
    Dernier message: 08/03/2005, 15h31
  4. [C#] windows form et ComboBox
    Par telynor dans le forum Windows Forms
    Réponses: 9
    Dernier message: 12/11/2004, 18h17
  5. [VB.NET] windows form traits
    Par DG JohnJohn dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2004, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo