2

我有一个背景定义为 XAML 中的 ImageBrush 的网格。图像非常大(大约 1 MB,jpg)。当我导航到页面时,首先显示大约一秒钟的黑色背景,然后加载背景图像。它看起来不太好。如何解决这个问题?也许一些图像缓存或将图像加载到内存中?

编辑:由于应用程序应支持的最高分辨率,图像为 2560x1600。有没有办法检测屏幕分辨率并使用适当的图像?我还在 Windows 8 博客上阅读了一篇关于缩放图像的文章,但我找不到任何它是如何工作的示例。这个想法是,1366x768 为 100%,1920x1080 为 140%,2560x1600 为 180%,系统会根据用户的分辨率选择正确的背景?

4

2 回答 2

0

您可以生成缩略图而不是 1 mb 的图像

于 2012-05-07T19:49:39.607 回答
0

我之前在 MSDN 上问过一个类似的问题,但没有得到一个普遍有用的答案。如果您希望能够转到任何页面并立即看到图像 - 您需要在导航之前加载它。如果您想避免闪烁 - 您可以将画笔的不透明度设置为 0 并等待 ImageBrush 上的 ImageOpened 事件,然后再将不透明度设置为 1.0 以实现平滑的淡入过渡。

编辑*

最新版本的WinRT XAML 工具包有一个附加属性 (ImageExtensions.FadeInOnLoaded),您可以在图像加载时使用它来淡入图像,这应该比在加载时简单地显示要好得多。也有样品。

要处理多个图像比例 - 您需要名称为 SplashScreen.scale-100.png、SplashScreen.scale-140.png、SplashScreen.scale-180.png 的图像,然后将图像源设置为 SplashScreen.png - 右侧分辨率的图像将自动被拾取。有关详细信息,请参阅此msdn 文章。

于 2012-05-07T20:39:24.513 回答