网格背景闪烁(Metro 应用程序)

本文关键字:应用程序 Metro 背景 闪烁 网格 | 更新日期: 2023-09-27 18:33:30

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

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

网格背景闪烁(Metro 应用程序)

我之前在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 文章。

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