2009-04-10 6 views
0

j'ai ce code pour afficher dans une des images du panneau avec un picturebox:Peupler un groupe avec des images .Winforms

private void ARR(int cNumber, string exc) 
    { 
     int Xpos = 8; 
     int Ypos = 8; 
     Image img; 
      Image.GetThumbnailImageAbort myCallback = 
      new Image.GetThumbnailImageAbort(ThumbnailCallback); 
     imgArray = new System.Windows.Forms.PictureBox[cNumber]; // assign number array 
     for (int i = 0; i < cNumber; i++) 
     { 
      imgArray[i] = new System.Windows.Forms.PictureBox(); 
      if (Xpos > 432) // six images in a line 
      { 
       Xpos = 8; // leave eight pixels at Left 
       Ypos = Ypos + 72; // height of image + 8 
      }  
      imgArray[i].Left = Xpos; 
      imgArray[i].Top = Ypos; 
      imgArray[i].Width = 64; 
      imgArray[i].Height = 64; 
      imgArray[i].Visible = true;   
      imgArray[i].SizeMode = PictureBoxSizeMode.StretchImage; 
      img = Image.FromFile(exc); 
      imgArray[i].Tag = exc[i]; 
      imgArray[i].Image = img.GetThumbnailImage(64, 64, myCallback, IntPtr.Zero); 
      panel1.Controls.Add(imgArray[i]); 
      Xpos = Xpos + 72; 
     } 

    } 

privée Liste GetPicture4 (string dossier) {

 DirectoryInfo dir = new DirectoryInfo(Folder); 
     List<string> str = new List<string>(); 
     FileInfo[] files = dir.GetFiles("*.jpg", SearchOption.AllDirectories); 
     NumOfFiles = files.Length; 
     imgExtension = new string[NumOfFiles]; 

     for (int i = 0; i < NumOfFiles; i++) 
     { 

     foreach (FileInfo file in files) 
     { 
      ARR(NumOfFiles, file.FullName); 
      str.Add(file.FullName); 

     } 
     return str; 
    } 

dans le dossier "Musique" il y a 30 fichier.jpg mais quand je débogue le panneau afficher 30 image mais le même fichier "jpg". Je ne comprends pas où est l'erreur :(. Avez-vous des conseils ou une idée où je tort? thansk beaucoup.

ce qui a trait à Nice

Répondre

1

ne l'avez pas, mais sur votre gagné code « t travail:

private List<string> GetPicture4(string Folder) //you need to define the type of list you are returning 
{ 
    DirectoryInfo dir = new DirectoryInfo(Folder); 
    List<string> str = new List<string>(); 
    FileInfo[] files = dir.GetFiles("*.jpg", SearchOption.AllDirectories); 
    int NumOfFiles = files.Length; //here you are missing a type, int in this case 
    imgExtension = new string[NumOfFiles]; 

    for (int i = 0; i < NumOfFiles; i++) 
    { 
     ARR(i, files[i].FullName); //pass i instead of NumOfFiles else in ARR the creating of the picturebox gets the same ID everytime 
     str.Add(files[i].FullName); 
    } 

    return str; 
} 

EDIT: Et la fonction ADD:

imgArray = new System.Windows.Forms.PictureBox[cNumber]; // assign number array 

T sa ligne ne devrait pas être ici. Vous en avez déjà créé un dans la boucle

+0

Merci PowerRoy, votre aide est juste, désolé pour ma banalité mais je suis un novice ... mais je vous souhaite bonne journée. :)) – JayJay

+0

offtopic: bonne journée à vous aussi;) Mais l'erreur était de 30 fois la même image. Pour autant que je sache, je ne l'ai pas réparé: P – RvdK

+0

Je peux montrer maintenant 30 images différentes, mais si je télécharge environ 100 images c'est tellement lent, cependant je vais travailler le plus vite possible. Merci PowerRoy – JayJay

Questions connexes