public bool SetImages(List <string> imagePaths, int startIndex = 0) { imagePaths = imagePaths.Where(x => File.Exists(x)).ToList(); if (imagePaths.Count == 0) { return(false); } if (startIndex < 0 || startIndex > imagePaths.Count) { startIndex = imagePaths.Count - 1; } m_alpha = 1.0F; m_index = startIndex; m_images = imagePaths; m_state = SlideshowState.Wait; m_timer.Stop(); pbImage.CancelAsync(); pbImage.ImageLocation = m_images[m_index]; // Don't cycle with one image if (imagePaths.Count == 1) { return(true); } m_timer.Start(); m_fadeOut.Restart(); InitBlendCache(); return(true); }
private void HandleState() { switch (m_state) { case SlideshowState.SetImage: m_state = SlideshowState.FadeIn; m_alpha = 0.0F; m_fadeOut.Restart(); SetImage(); m_fadeCount = FadeTimes; break; case SlideshowState.FadeIn: Fade(1.0F / FadeTimes); if (m_fadeCount == 0) { m_state = SlideshowState.Wait; } break; case SlideshowState.Wait: if (m_fadeOut.ElapsedMilliseconds >= ImageMilliseconds - FadeMilliseconds) { m_fadeCount = FadeTimes; m_state = SlideshowState.FadeOut; } break; case SlideshowState.FadeOut: Fade(-1.0F / FadeTimes); if (m_fadeCount == 0) { m_index++; m_index %= m_images.Count; m_state = SlideshowState.SetImage; } break; } }