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

时间:2012-05-07 19:45:26

标签: c# xaml windows-8 windows-runtime winrt-xaml

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

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

2 个答案:

答案 0 :(得分:0)

您可以使用1 mb

生成缩略图而不是图像

答案 1 :(得分:0)

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

编辑*

最新版本的WinRT XAML Toolkit有一个附加属性(ImageExtensions.FadeInOnLoaded),你可以用它在加载时淡入图像,这看起来比在加载时简单地显示它要好得多。还有一个样本。

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

相关问题