如果我有一个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;
}
显然,如果您的表单上已经有一个图像控件,则不需要创建一个新控件,或者如果您确实想创建它,则必须将其添加到某种父面板中......
〜克里斯