Я пытаюсь сделать массив изображений для установки на мой контроль изображения. Существует цикл, который будет проходить через изображения и отображать каждую секунду, пока не остановится на случайном изображении.Как создать массив типа ImageSource?
Мой подход: Я сохранил пути изображений в строке, которую затем помещаю в массив. Внутри моего цикла я создаю новый ImageSource и определяю его по элементу массива, который поворачивается, чтобы он отображался. Я считаю, что причина, по которой моя программа не будет работать, заключается в том, что ImageSource не может вытащить изображение из файла и достаточно быстро установить его на контроллер изображения, прежде чем спеть поток, чтобы изображение отображалось на секунду.
Вот мой код (предположим, что строки являются правильные пути, и я попытался несметное Thread.Sleep() переменные)
Этот код работает, но он отображает только последний снимок вместо того, чтобы листать все они быстро, то останавливаясь на последнее изображение.
Будет ли создавать массив типа ImageSource, чтобы изображения «под рукой» отображались быстрее? Может ли WPF поддерживать скорость, необходимую для получения и установки изображений в контроллер изображения? Может ли моя спящая нить выполняться слишком быстро, прежде чем изображение будет установлено и отображено?
private void ButtonClick(object sender, RoutedEventArgs e)
{
String[] picArray = new String[] { kristen, justin, brandon, sarah, miles, nina };
int i = 0;
x = rnd.Next(0,5);
while (i < rnd.Next(10,50))
{
ImageSource _currentPic = new BitmapImage(new Uri(picArray[x]));
cImage.Source = _currentPic;
if (x == 5)
x = 0;
else
x++;
Thread.Sleep(100);
i++;
}
}
Петля останавливается на «случайной» точке массива, чтобы рандомизировать, чей образ заканчивается.
Спасибо заранее.
'ImageSource []', это, безусловно, будет быстрее зависеть от того, как вы их храните, если вы просто держите их локальными в этом методе, то это займет больше времени – Sayse
Не связано с вашим вопросом, но кажется, что вы «Выполняем некоторые длительные операции с потоком пользовательского интерфейса, особенно с вызовом« Thread.Sleep() ». Возможно, вы захотите это изменить. – Steve
Я попытался использовать ImageSource [], но это не позволило мне создать и массив этого типа. Что касается thread.sleep(), я не задумывался над этим. Будет ли использование таймера более эффективным? – meisenman