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 :

Afficheur d'images (c#) [Débutant]


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 21
    Points : 11
    Points
    11
    Par défaut Afficheur d'images (c#)
    Salut,
    J'ai un exercice de c# à réaliser dans le cadre d'un TP, il s'agit de créer un afficheur d'image. Il y a donc 3 parties distinctes : une PictureBox à droite pour afficher l'image sélectionnée, un TreeView (repertoire) en haut à gauche pour sélectionner le dossier et une ListView (fichiers) pour afficher le contenu du dossier choisi.
    Le problème est que j'arrive à ouvrir et sélectionner un dossier mais lorsque je clique dessus, les images qu'il est censé contenir ne s'affiche pas dans la ListView.

    Voici le code du form1.cs :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
     
    namespace WindowsFormsApplication5
    {
        public partial class Form1 : Form
        {
            private ImageList imageList1 = new ImageList();
     
            public Form1() /// Mise en place des éléments qui composent la fenêtre
            {
                InitializeComponent();
            }
     
            private void ouvrirToolStripButton_Click(object sender, EventArgs e)
            {
                /*// Displays an OpenFileDialog so the user can select a Cursor.
                OpenFileDialog opfd = new OpenFileDialog();
                opfd.Filter = "Fichiers JPEG|*.jpg";
                opfd.Title = "Choisir le fichier";
     
                // Show the Dialog.
                // If the user clicked OK in the dialog and
                // a .jpg file was selected, open it.
                if (opfd.ShowDialog() == DialogResult.OK)
                {
                    string filename = opfd.FileName;
                    ChargerImage(filename);
                }*/
                FolderBrowserDialog fld = new FolderBrowserDialog();
                fld.Description = "Choisir le repertoire d'image";
                fld.RootFolder = Environment.SpecialFolder.MyPictures;
                if (fld.ShowDialog() == DialogResult.OK)
                {
                        string filename = fld.SelectedPath;
                        foreach (string f in Directory.GetDirectories(fld.SelectedPath))
                        {
                            TreeNode tn = new TreeNode(f);
                            repertoire.Nodes.Add(tn);
                        }
                }
     
            }
     
            private void repertoire_AfterSelect(object sender, TreeViewEventArgs e)
            {
                ChercherImage(e.Node.Text);
            }
     
     
            private void ChargerImage(string filename) /// Charge l'image dans la "boîte à image"
            {
                pictureBox1.Image = Image.FromFile(filename);
                this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                this.pictureBox1.Text = filename;
            }
     
            private void ChercherImage(string path) /// Affiche l'ensemble des fichiers et leurs icônes lorsqu'un dossier est sélectionné
            {
                fichiers.View = View.LargeIcon;
                imageList1.ImageSize = new Size(80, 60);
                fichiers.LargeImageList = imageList1;
                string[] files = Directory.GetFiles(path); /// Stocke la liste des fichiers
                foreach (string s in files)
                {
                    if (s.ToUpper().EndsWith("jpg")) /// Contrôle qu'il sagit bien d'une image
                    {
                        Image im = Image.FromFile(s);
                        imageList1.Images.Add(im.GetThumbnailImage(106, 120, null, IntPtr.Zero)); /// Création des miniatures
                        im.Dispose();
                        ListViewItem lw = new ListViewItem(s, imageList1.Images.Count - 1);
                        fichiers.Items.Add(lw);
                    }
                }
            }
     
            private void fichiers_Click(object sender, EventArgs e) /// Sélection du fichier à afficher
            {
                string f;
                if (fichiers.SelectedIndices.Count > 0)
                {
                    f = fichiers.SelectedItems[0].Text;
                    ChargerImage(f);
                }
            }
     
        }
    }

  2. #2
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    Bonjour ;

    d'une part assurez vous que vos images sont bien a "JPG" ou non pas "JPEG"

    et d'autre part utilise à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (s.ToUpper().EndsWith("jpg")) /// Contrôle qu'il sagit bien d'une image
                    {}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (Path.GetExtension(s).ToUpper().Equals(".JPG") /*ou bien '.JPEG'*/) /// Contrôle qu'il sagit bien d'une image
                { }
    dans l'attente de votre requête après la modification

  3. #3
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    au lieu de faire un ToUpper il vaut mieux utiliser string.Compare("", "", CompareOptions.OrdinalIgnoreCase)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Merci à vous pour les réponses.
    Néanmoins, j'ai beau utiliser vos solutions, cela ne fonctionne toujours pas.
    Cela peut-il provenir du Form1.Designer.cs que je n'ai quasiment jamais modifié?

  5. #5
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    peut tu faire une point d’arrêté pour le débougage afin de vérifier si votre programme passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (s.ToUpper().EndsWith("jpg")) /// Contrôle qu'il sagit bien d'une image
                    {}
    afin d'identifier est ce que c'est un problème dans l'affichages des images ou bien dans la récupération

  6. #6
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (s.ToUpper().EndsWith("JPG")) /// Contrôle qu'il sagit bien d'une image
                    {}

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Pour être honnête je ne maîtrise pas le debugger de visual studio. Pouvez vous m'indiquer la marche à suivre?

  8. #8
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    tu va allez à la ligne ou tu veux arrêter le debougage et faire un F9 pour marqué une point d’arrêt ensuite faire F5 pour lancer le debougage et faire F10 pour suivre l’exécution du code pas à pas

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Merci meziantou pour vos réponses mais j'ai également essayé de cette façon.
    Lorsque j'utilise le debugger de cette façon, il m'affiche le fichier Program.cs puis la programme se lance à partir de la première accolade fermante :

    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
     
    namespace WindowsFormsApplication5
    {
        static class Program
        {
            /// <summary>
            /// Point d'entrée principal de l'application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }

  10. #10
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    click F5 pour aller ou point d’arrêt laquelle vous avez cree

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Je crois qu'il ne rentre pas dans la fonction : ChercherImage
    Je suis un peu perdu là...

  12. #12
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    alors on reprend à zéro ;

    on va supprimer tous les points d’arrêt par ctr+shift et F9

    et message vous demandez de confirmer la surpression de tous les points d’arrêt de debougage .

    ensuite tu va allez la fonction ChercherImage et va cliquer sur la ligne ou se trouve

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       foreach (string s in files)
    et clique ensuite F9 tu va voir que il y'a une Boole qui s'affiche à gauche

    et suite fait F5 pour démarrer le debougge .

    et tu fait comme si tu test ton code une fois l'excution s'arrete à ce point ,essaye de faire un debougage pas à pas avec F10


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

Discussions similaires

  1. Réponses: 9
    Dernier message: 29/03/2012, 00h23
  2. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  3. Faire un afficheur d'image
    Par m14w dans le forum Delphi
    Réponses: 5
    Dernier message: 30/07/2006, 20h06
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  5. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

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