在 WPF 中循环更改图像源

本文关键字:图像 循环 WPF | 更新日期: 2023-09-27 18:37:10

我想在我的程序中循环更改图像源,它是 C# 代码:

private void Img_MouseLeave(object sender, MouseEventArgs e)
{
    Image image = sender as Image;
    int milliseconds = 500;
    for(int i = 0; i < ImageUris.Count(); i++)
    {
       Thread.Sleep(milliseconds);
       image.Source = new BitmapImage(new Uri(@ImageUris[i], UriKind.Absolute));
    }
}

但问题是当我运行程序时,窗口被冻结了。窗口中没有发生。我想也许它受到线程的影响,但我找不到办法。

在 WPF 中循环更改图像源

调用

Thread.Sleep将冻结正在运行应用程序的 MainThread。

使用 DispatcherTimer 来避免冻结应用程序。

DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += dispatcherTimer_Tick;
dispatcherTimer.Interval = new TimeSpan(0, 0, 0, 500);
private void dispatcherTimer_Tick(object sender, EventArgs e) {
   // assign new source to the Image
}