【发布时间】:2009-02-05 13:18:34
【问题描述】:
在从 URI 创建位图时,我一直在使用 BitmapImage.DownloadProgress 事件来等待图像被加载。那就是我可以在下载完成后使用事件处理程序来检查 Image.ActualWidth/ActualHeight。这很好用。
但是当我加载用户从他们的计算机中选择的图像时,DownloadProgress 是无用的。
这适用于 URI 位图:
private void LoadImage(Uri uri)
{
this.ResetProgressImage();
BitmapImage image = new BitmapImage();
image.DownloadProgress += new EventHandler<DownloadProgressEventArgs>(LoadImageDownloadProgress);
image.UriSource = uri;
this.ImageFull.Source = image;
}
private void LoadImageDownloadProgress(object sender, DownloadProgressEventArgs e)
{
this.Dispatcher.BeginInvoke(delegate
{
this.ProgressImage.Value = e.Progress;
if (e.Progress == 100)
{
ImageHelper.Current.Width = Math.Round(this.ImageFull.ActualWidth);
ImageHelper.Current.Height = Math.Round(this.ImageFull.ActualHeight);
}
});
}
但这在从流中获取 BitmapImage 时不起作用:
private void LoadImage(Stream stream)
{
this.ResetProgressImage();
BitmapImage image = new BitmapImage();
image.DownloadProgress += new EventHandler<DownloadProgressEventArgs>(LoadImageDownloadProgress);
image.SetSource(stream);
this.ImageFull.Source = image;
}
在使用 SetSource(stream) 时,有人知道 DownloadProgress 的替代方法吗?
【问题讨论】:
-
请给正确答案投票。
标签: c# silverlight image