【发布时间】:2013-06-21 15:06:19
【问题描述】:
我正在尝试制作一组图片以设置为我的图像控件。有一个循环将遍历图片并显示一秒钟,直到它在随机图片上停止。
我的方法:我将图片路径存储在一个字符串中,然后将其放入一个数组中。在我的循环中,我创建了一个新的 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[],这肯定会更快,这取决于您如何存储它们,如果您只是在这种方法中将它们保存在本地,那么这将花费更长的时间 -
与您的问题无关,但您似乎在 UI 线程上执行了一些长时间的操作,尤其是在使用
Thread.Sleep()调用时。您可能需要考虑改变这一点。 -
我尝试使用 ImageSource[] 但它不允许我创建该类型的数组。关于 thread.sleep(),我并没有考虑太多。使用计时器会更有效吗?
-
也许this 有帮助。
标签: c# wpf imagesource