Я бы не стал использовать системные ресурсы для этого. Они не так просты в сопровождении, как файловая система для автономного программного обеспечения.
Поместите изображения в папку для вашего приложения. Таким образом, они могут быть легко обновлены/изменены. Сказать :
C:\Ninjas - app
c:\Ninjas\images - images
Создайте массив, содержащий эти изображения.
string[] files = System.IO.Directory.GetFiles("c:\ninjas\images");
Вам нужно будет поместить некоторые фильтры в GetFiles, чтобы убедиться, что вы получаете только изображения.
Теперь возьмите случайную позицию в этом массиве (вы уже показали, что знаете, как делать случайные числа).
У нас есть массив, давайте перемешаем его, а затем вы можете просмотреть их последовательно (намного быстрее, чем случайным образом выбирать. CPU будет любить вас за это)
private string[] files;
private int currentIndex = 0;
private void initializeImages()
{
//Grab directories in your images directory
string appRoot = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
files = System.IO.Directory.GetFiles(appRoot + @"\images");
Random rnd = new Random();
files = files.OrderBy(x => rnd.Next()).ToArray();
}
private void setImage()
{
pictureBox1.ImageLocation = files[currentIndex];
}
private void previousImage()
{
currentIndex = currentIndex > 0 ? currentIndex - 1 : 0;
setImage();
}
private void nextImage()
{
currentIndex = currentIndex < files.Length - 1 ? currentIndex + 1 : files.Length - 1;
setImage();
}
Пара вещей:
- Не жестко кодируйте путь к файлу. Имейте это в своем файле app.config и ссылайтесь на него.
- Вы можете сделать файловый массив глобальным, чтобы его не нужно было запускать каждый раз.
Если вы хотите, чтобы это было слайд-шоу, которое будет работать до тех пор, пока пользователь не отменит его, я бы рекомендовал следующее:
- Используйте объект таймера, который вызывает метод для увеличения количества изображений, что меняет изображение.
- Не используйте thread.sleep в своем графическом интерфейсе, так как он приостановит работу вашего графического интерфейса - а это нехорошо.
Если вы хотите добавить кнопки Next/Previous, вам понадобится глобальный индекс (скажем, currentIndex), который можно увеличить/уменьшить, а затем вызвать код для установки изображения
person
Ryan Ternier
schedule
03.07.2012