none
remplir une imageList RRS feed

  • Question

  • Bonjour,

    J'ai ce code :

             imageList1.Images.Clear();
             imageList1.ImageSize = new Size(128, 128);

             Assembly assembly = Assembly.GetEntryAssembly();
             string dirPath = String.Format("{0}\\", Path.GetDirectoryName(assembly.Location));
             DirectoryInfo myDir = new DirectoryInfo   (@"C:\Images\Grands\");
             FileInfo[] Files = myDir.GetFiles("*.JPG");
             
             int FileMax = Files.Length ;
             
             for (int i = 0; i < FileMax; i++)

             {
                imageList1.Images.Add(Files[i]);
             }

    Je n'arrive pas a le mettre au point !!!

    J'ai une erreur a la ligne   imageList1.Images.Add(Files[i]);

    A l'aide SVP.

    Mon but est de remplir une imageList pas des images qui sont sur le disque dur.

    Cordialement

    Salva

    mercredi 4 juillet 2012 10:29

Réponses

  • Bonjour,

    Je pense que le problème est que l'on ajoute un objet FileInfo alors que la collection est une collection d'objet Image ce qui devrait être ce qu'indique le message que vous avez (et merci de TOUJOURS indiquer le message d'erreur exact).

    Voir http://msdn.microsoft.com/fr-fr/library/system.windows.forms.imagelist.images.aspx (le code utilise Image.FromFile avec le nom complet du fichier pour créer une image).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mercredi 4 juillet 2012 12:49
    Modérateur
  • En complémente de Patrice, utilisez le constructeur de BitmapImage qui attend le nom du fichier image.

    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    mercredi 4 juillet 2012 13:46
  • Bonjour,

    Les reponses m'ont bien aider, mais voila comment j'ai resolu mon probleme.

          void  Afficher_Image ()
          {
             Double Large;
             Double Haut;
             Double Prc_Large;
             Double Prc_Haut;
             int Lg;

             int Fin = Debut + 50;
             if (Fin > FileMax)
             {
                Fin = FileMax;
             }

             Dgv_timbres.Rows.Clear();

             for (int i = Debut; i <= Fin; i++)
             {
                try
                {
                   string Fic = Dir[i].ToUpper();
                   if (Fic.IndexOf (".JPG") >= 0 )
                   {
                      Dgv_timbres.Rows.Add("");
                      Lg = Dgv_timbres.Rows.Count - 1;

                      Large = System.Drawing.Image.FromFile(Dir[i]).Width;
                      Haut = System.Drawing.Image.FromFile(Dir[i]).Height;
                      Prc_Large = (160 / Large);
                      Prc_Haut = (160 / Haut);
                      Pic_Temp.Size = new System.Drawing.Size(Convert.ToInt16(160 * Prc_Haut), Convert.ToInt16(160 * Prc_Large));
                      Pic_Temp.Image = System.Drawing.Image.FromFile(Dir[i]);

                      Dgv_timbres.Rows[Lg].Cells[1].Value = Pic_Temp.Image;
                      int x = Dir[i].IndexOf (@"\",15);
                      Dgv_timbres.Rows[Lg].Cells[0].Value = Dir[i].Substring(x + 1);
     
                      Large = 0;
                      Haut = 0;
                      Prc_Large = 0;
                      Prc_Haut = 0;
                      Pic_Temp.Dispose();
                   }
                }
                catch (Exception)
                { } 
             }

             Fin = 0;
             Lg = 0;
             Large = 0;
             Haut = 0;
             Prc_Large = 0;
             Prc_Haut = 0;
             Pic_Temp.Dispose();
          }

    Cordialment

    Salva

    • Marqué comme réponse sa56 mardi 17 juillet 2012 07:10
    mardi 17 juillet 2012 07:10

Toutes les réponses

  • Bonjour,

    Je pense que le problème est que l'on ajoute un objet FileInfo alors que la collection est une collection d'objet Image ce qui devrait être ce qu'indique le message que vous avez (et merci de TOUJOURS indiquer le message d'erreur exact).

    Voir http://msdn.microsoft.com/fr-fr/library/system.windows.forms.imagelist.images.aspx (le code utilise Image.FromFile avec le nom complet du fichier pour créer une image).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    mercredi 4 juillet 2012 12:49
    Modérateur
  • En complémente de Patrice, utilisez le constructeur de BitmapImage qui attend le nom du fichier image.

    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    mercredi 4 juillet 2012 13:46
  • Bonjour,

    sa56 pouvez-vous nous dire si les réponses de Patrice et Richard vous ont aidé. Merci de tenir informé la communauté.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    lundi 16 juillet 2012 22:42
    Modérateur
  • Bonjour,

    Les reponses m'ont bien aider, mais voila comment j'ai resolu mon probleme.

          void  Afficher_Image ()
          {
             Double Large;
             Double Haut;
             Double Prc_Large;
             Double Prc_Haut;
             int Lg;

             int Fin = Debut + 50;
             if (Fin > FileMax)
             {
                Fin = FileMax;
             }

             Dgv_timbres.Rows.Clear();

             for (int i = Debut; i <= Fin; i++)
             {
                try
                {
                   string Fic = Dir[i].ToUpper();
                   if (Fic.IndexOf (".JPG") >= 0 )
                   {
                      Dgv_timbres.Rows.Add("");
                      Lg = Dgv_timbres.Rows.Count - 1;

                      Large = System.Drawing.Image.FromFile(Dir[i]).Width;
                      Haut = System.Drawing.Image.FromFile(Dir[i]).Height;
                      Prc_Large = (160 / Large);
                      Prc_Haut = (160 / Haut);
                      Pic_Temp.Size = new System.Drawing.Size(Convert.ToInt16(160 * Prc_Haut), Convert.ToInt16(160 * Prc_Large));
                      Pic_Temp.Image = System.Drawing.Image.FromFile(Dir[i]);

                      Dgv_timbres.Rows[Lg].Cells[1].Value = Pic_Temp.Image;
                      int x = Dir[i].IndexOf (@"\",15);
                      Dgv_timbres.Rows[Lg].Cells[0].Value = Dir[i].Substring(x + 1);
     
                      Large = 0;
                      Haut = 0;
                      Prc_Large = 0;
                      Prc_Haut = 0;
                      Pic_Temp.Dispose();
                   }
                }
                catch (Exception)
                { } 
             }

             Fin = 0;
             Lg = 0;
             Large = 0;
             Haut = 0;
             Prc_Large = 0;
             Prc_Haut = 0;
             Pic_Temp.Dispose();
          }

    Cordialment

    Salva

    • Marqué comme réponse sa56 mardi 17 juillet 2012 07:10
    mardi 17 juillet 2012 07:10