2017-02-23 6 views
1

Я пытаюсь загрузить изображение в pictureBox из строкового массива изображений, созданных с помощью Directory.GetFiles(). Я считаю, что я неправильно настраиваю picFile.Попробуйте загрузить картинку из массива изображений

Я чем создали событие pictureBox_Click для загрузки последующих снимков, но не написано, что обработчик

string fileEntries = ""; 

private void showButton_Click(object sender, EventArgs e) 
{ 
    // First I want the user to be able to browse to and select a 
    // folder that the user wants to view pictures in 
    string folderPath = ""; 
    FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog(); 
    if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) 
    { 
     folderPath = folderBrowserDialog1.SelectedPath; 
    } 

    // Now I want to read all of the files of a given type into a 
    // array that from the path provided above 
    ProcessDirectory(folderPath); 

    // after getting the list of path//filenames I want to load the first image here 
    string picFile = fileEntries; 
    pictureBox1.Load(picFile); 
} 

public static void ProcessDirectory(string targetDirectoy) 
{ 
    // Process the list of files found in the directory. 
    string[] fileEntries = Directory.GetFiles(targetDirectoy); 
    } 

    // event handler here that advances to the next picture in the list 
    // upon clicking 
} 

события, если перенаправить массив строк в консоль я вижу список файлов в этом каталоге, но это также имеет полный путь как часть строки - не уверен, что это проблема.

+1

Попробуйте pictureBox1.Image = Image.FromFile (picFile); –

ответ

1
string[] fileEntries = ProcessDirectory(folderPath); 
if (fileEntries.Length > 0) { 
string picFile = fileEntries[0]; 
pictureBox1.Load(picFile); 
} 

У вас есть файлEntries, объявленный дважды.

public static string[] ProcessDirectory(string targetDirectoy) { 
return Directory.GetFiles(targetDirectoy); 
} 
1

Теперь я хочу, чтобы прочитать все файлы данного типа в массив, который с пути, представленной выше

Таким образом, вы должны изменить подпись метода ProcessDirectory в верните строку, которая включает все файлы изображений, вы можете использовать шаблон поиска для получения файлов с определенным расширением. Вы можете использовать следующую подпись:

public static string[] ProcessDirectory(string targetDirectoy) 
{ 
    return Directory.GetFiles(targetDirectoy,"*.png"); 
} 

после получения списка путей // имен файлов Я хочу, чтобы загрузить первое изображение здесь

Таким образом, вы можете вызвать метод, чтобы получить все файлы этот конкретный каталог с конкретными расширениями. А затем загрузить первый файл в PictureBox, если массив, имеющий какие-либо файлы, вы можете использовать следующий код для этого:

var pictureFiles = ProcessDirectory(folderPath); 
if (pictureFiles.Length > 0) 
{ 
// process your operations here   
    pictureBox1.Load(pictureFiles[0]); 
} 
Смежные вопросы