如果我有一个Image
从完整 URL 下载的 Silverlight 控件,如何在不进行另一个 Web 调用的情况下获取下载图像的大小(以字节为单位)?
我找不到任何可以告诉我的内容Image
或BitmapImage
背后的来源。甚至DownloadProgress
事件上也BitmapImage
只给出一个百分比。
如果我有一个Image
从完整 URL 下载的 Silverlight 控件,如何在不进行另一个 Web 调用的情况下获取下载图像的大小(以字节为单位)?
我找不到任何可以告诉我的内容Image
或BitmapImage
背后的来源。甚至DownloadProgress
事件上也BitmapImage
只给出一个百分比。
我以前从未注意到它,但这是框架中的一个奇怪的差距......
您可能必须使用 WebClient 对象自行下载图像。这会给你一个字节流。您可以检查流的长度,然后从流中创建位图。
设置 Web 客户端并开始下载的代码(注意,这是一个异步调用,因此我们分配了一个事件处理程序以在它完成下载时触发。)
WebClient wc = new WebClient();
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
Uri someImageUri = new Uri("http://www.somesite.com/someimage.jpg");
wc.OpenReadAsync(someImageUri);
以下是事件处理程序方法的示例:
void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
System.IO.Stream imageStream = e.Result;
long imageSize = imageStream.Length;
BitmapImage bi = new BitmapImage();
bi.SetSource(imageStream);
Image image = new Image();
image.Source = bi;
}
显然,如果您的表单上已经有一个图像控件,则不需要创建一个新控件,或者如果您确实想创建它,则必须将其添加到某种父面板中......
〜克里斯