【发布时间】:2012-03-08 19:14:39
【问题描述】:
我有一个 url 数组。每个 url 包含一个图像。我需要一一下载并开始幻灯片放映。我尝试使用循环下载每个文件并显示它们。但是,每当我试图获取以前的图像时,我什么都得不到。
我的代码如下所示
string [] urlArray;
int currentItem;
int totalItems;
private void StartSlideShow()
{
for(int i=0;i < totalItems;i++)
{
DownloadImage(urlArray[i]);
}
}
private void DownloadImage(string url)
{
WebClient wc=new WebClient();
wc.OpenReadCompleted+=new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
wc.OpenReadAsync(new Uri(url));
}
private void wc_OpenReadCompleted(object sender,OpenReadCompletedEventArgs e)
{
BitmapImage bi=new BitmapImage();
bi.SetSource(e.Result);
imgThumbnail.Source=bi;
}
private void btnNext_Click(object sender, RoutedEventArgs e)
{
if (currentItem < totalItems)
{
DownloadImage(urlArray[currentItem+1]);
currentItem++;
}
}
private void btnBack_Click(object sender, RoutedEventArgs e)
{
if (currentItem > 1)
{
DownloadImage(urlArray[currentItem-1]);
currentItem--;
}
}
然后我尝试先下载所有图像并保存到 BitmapImage 数组中,并在完成下载后尝试开始幻灯片放映。在这种情况下不显示任何内容。
代码是
private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
bi.SetSource(e.Result);
biArr[currentItem].SetSource(e.Result);
if(currentItem==totalItems])
ShowSlides(biArr);
}
private void ShowSlides(BitmapImage[] biArr)
{
for(int i=0;i < totalItems;i++)
{
imgThumbnail.Source=biArr[i];
System.Threading.Thread.Sleep(5000);
}
}
然后我尝试将图像转换为 byteArray 并将其保存到名为 BMPList 的列表中。 (列表 BMPList)。完成下载后,当我尝试显示图像时,只有黑色显示为图像
代码是
private void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
BitmapImage bi = new BitmapImage();
bi.SetSource(e.Result);
using (MemoryStream ms = new MemoryStream())
{
WriteableBitmap btmMap = new WriteableBitmap(bi.PixelWidth, bi.PixelHeight);
System.Windows.Media.Imaging.Extensions.SaveJpeg(btmMap, ms, bi.PixelWidth, bi.PixelHeight, 0, 100);
BMPList.Add(ms.ToArray());
}
if(currentItem == totalItems)
ShowSlides(BMPList);
}
private void ShowSlides(List<byte[]> BMPList)
{
for(int i=0; i < BMPList.Count;i++)
{
if (BMPList[currentDisplayItem] != null)
{
MemoryStream ms = new MemoryStream(BMPList[i], 0, BMPList[i].Length);
ms.Write(BMPList[i], 0, BMPList[i].Length);
BitmapImage img = new BitmapImage();
img.SetSource(ms);
imgThumbnail.Source = img;
}
System.Threading.Thread.Sleep(5000);
}
}
如何下载所有图像并开始幻灯片放映?
【问题讨论】:
-
也请任何人告诉我如何格式化代码。
-
有关格式化的信息,请参阅stackoverflow.com/editing-help
-
选择你的代码并给 ctrl+K,这个元数据给你:meta.stackexchange.com/questions/22186/…
标签: windows-phone-7 windows-phone-7.1