Заполните панель изображениями. - PullRequest
0 голосов
/ 10 апреля 2009

У меня есть этот код для отображения на панели изображений с pIctureBox:

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;
        }

    }

личный список GetPicture4 (строка папок) {

        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;
    }

В папке «Музыка» находится 30 file.jpg, но когда я отлаживаю, Panel показывает 30 изображений, но тот же файл «jpg». Я не понимаю, где ошибка :(. У вас есть совет или идея, где я не прав? Большое спасибо.

С наилучшими пожеланиями

1 Ответ

1 голос
/ 10 апреля 2009

Не понял, но ваш код не будет работать:

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: Что насчет функции ADD:

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

Эта строка не должна быть здесь. Вы уже создаете один в цикле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...