1

我正在使用 Uri 在我的 XAML 网格上设置背景图像。Uri 指向一个 HTTP url,它将从那里获取,然后将图像渲染为 Win8 Metro 应用程序的背景。

我一直在试图弄清楚是否有一个事件或我可以挂钩的东西让我知道 WPF 已将其加载到内存中,并完成将其渲染出视野。

目前,小图像加载速度足够快,并且可以平滑淡入。但是,如果我加载更大、更慢的图像,则需要 100 毫秒才能显示为背景,这意味着它要么在淡入淡出中弹出,要么渐变效果完成后。这看起来很可怜​​。

目标是在应用程序页面之间进行淡入淡出转换(我已经有了这个),而不会在完成时弹出背景图像的不一致。

任何建议都会受到欢迎。

4

2 回答 2

3

您没有确切说明您是如何加载图像的,但是 BitmapImage 上有一个 DownloadCompleted 事件,例如

BitmapImage bmp = new BitmapImage(imageUri); 
bmp.DownloadCompleted += ReadyToDisplay; 
于 2012-04-04T21:42:59.503 回答
0

就像 Phil 说的,但是对于 Windows Store 应用程序:

BitmapImage bmp = new BitmapImage(imageUri);
bmp.ImageOpened += ReadyToDisplay;

ImageOpened 当图像源下载和解码没有失败时发生。您可以使用此事件在渲染之前确定图像的大小。

来源:MSDN

于 2013-04-11T19:06:21.983 回答