Цикл foreach с изображениями

У меня есть последовательность изображений 80 PNG, в которой я пытаюсь создать анимацию для своего приложения Windows. Путь к файлу - Assets/Star/, и я пытаюсь понять, как сделать цикл foreach для каждого изображения в папке, чтобы он установил объект изображения как Image1, а затем после определенного количества тиков с таймером он будет измените его на Image2 и так далее, вот что у меня есть:

private void SubmitButton_Click(object sender, RoutedEventArgs e)
   {
      if(LevelUp == true)
        {
            string ImagePath = "Assets/Star/";
            foreach (Image item in ImagePath)
            {

            }
        }
   }

Однако я не думаю, что я подхожу к этому правильно, кто-нибудь знает, как я должен подходить к этому?


person Jermain Defo    schedule 11.02.2015    source источник
comment
Где твой таймер?   -  person Rufus L    schedule 12.02.2015
comment
Разве вы не должны использовать простой GIF вместо 80 различных PNG?   -  person Pierre-Luc Pineault    schedule 12.02.2015
comment
Может ему нужны качественные цвета..   -  person TaW    schedule 12.02.2015
comment
Вам нужен таймер и нужно закодировать его событие Tick. Кнопка ничего не сделает, кроме запуска таймера (и, возможно, подготовит ImageList)   -  person TaW    schedule 12.02.2015
comment
@Pierre-LucPineault PNG был бы гораздо предпочтительнее, учитывая его качество   -  person Jermain Defo    schedule 12.02.2015


Ответы (1)


Просто await Task.Delay для асинхронного ожидания заданного промежутка времени:

private async void SubmitButton_Click(object sender, RoutedEventArgs e)
{
    if (LevelUp)
    {
        string imagePath = "Assets/Star/";
        foreach (Image image in GetImages(imagePath))
        {
            ShowImage(image);
            await Task.Delay(timeToWait);
        }
    }
}
person Servy    schedule 11.02.2015
comment
Есть ли способ установить временной интервал? - person Jermain Defo; 12.02.2015
comment
@JermainDefo Да, конечно есть. timeToWait в этом примере — это переменная, определяющая время ожидания. Установите его на все, что вы хотите. - person Servy; 12.02.2015
comment
Ух ты! Я не думал, что это будет так просто! Итак, await Task.Delay — это сам таймер? Другими словами, это будет решением? - person Jermain Defo; 12.02.2015
comment
@JermainDefo Task.Delay использует внутренний таймер для создания Task, которое будет завершено после указанной задержки. Вам не нужно взаимодействовать с этим таймером напрямую. - person Servy; 12.02.2015
comment
GetImages не распознается. У меня есть ошибка о том, что имя GetImages не существует в текущем контексте. У вас есть идеи, почему? - person Jermain Defo; 12.02.2015
comment
@JermainDefo Потому что вы еще этого не написали. Вам нужно будет написать метод для получения всех изображений по заданному пути. - person Servy; 12.02.2015
comment
Поскольку изображения называются Image1, Image2, Image3 и т. д. Не было бы возможно объявить путь к файлу с изображением, таким как Assets/Images/Image && number (где числовая переменная добавляется к 1 каждый раз, когда она встречается фото), поэтому, если бы число 3 было сохранено, оно вышло бы как Assets/Images/Image3, если это возможно сделать, не лучше ли было бы в хронологическом порядке? - person Jermain Defo; 12.02.2015