我有一个背景定义为ImageBrush的网格。图像相当大(约1MB,jpg)。当我导航到页面时,首先只显示一秒钟的黑色背景,然后在一段时间后加载背景图像。看起来不太好。如何解决这个问题?也许是一些图像缓存或者将图像加载到内存中?
编辑:图像是2560x1600,因为应用程序应该支持的分辨率最高。是否有检测屏幕分辨率和使用适当图像的方法?我还在Windows 8博客上读到了一篇关于缩放图片的文章,但我找不到它是如何工作的。其思想是: 1366x768为100%,1920x1080为140%,2560x1600为180%,系统根据用户的分辨率选择合适的背景?
发布于 2012-05-07 20:39:24
我以前在MSDN上问过一个相似问题,但是没有得到一个普遍有用的答案。如果您希望能够转到任何页面并立即看到图像--您需要在导航之前加载它。如果您想避免闪烁-您可以设置画笔的不透明度为0,并等待ImageOpened事件在ImageBrush上,然后您动画不透明度回到1.0顺利淡入过渡。
编辑*
WinRT XAML工具包的最新版本有一个附加属性(ImageExtensions.FadeInOnLoaded),您可以使用它在图像加载时淡出,这比加载时显示要好得多。也有样品。
要处理多个图像缩放--您需要具有诸如SplashScreen.scale-100.png、SplashScreen.scale-140.png、SplashScreen.scale-180.png等名称的图像,然后当您将图像源设置为SplashScreen.png时,将自动获取分辨率的正确图像。有关更多细节,请参见此msdn文章。
发布于 2012-05-07 19:49:39
您可以生成缩略图而不是1mb的图像。
https://stackoverflow.com/questions/10488127
复制相似问题