图像需要很长时间才能加载WinRT XAML

时间:2013-02-22 06:22:59

标签: performance xaml windows-runtime imagebrush

在我们的WinRT应用程序中,我们通过XAML提供了图像作为网格和按钮的背景。

我们观察到图片需要很长时间才能加载,应用程序首先显示其他文本控件(如TextBlock),然后在一段时间后加载我们的图像。直到我们只在页面中看到文本控件。

我们将背景设置如下

<ImageBrush ImageSource="ms-appx:////Images/image.png"/>

请告知我们,我们可以采取哪些措施来解决此问题。

感谢。

3 个答案:

答案 0 :(得分:1)

你可以

  • 降低图像的分辨率
  • 在显示页面之前等待它加载 - 或者通过以某种方式较早地开始或者通过将页面显示为完全黑色来加载,例如,在图像加载时淡入
  • 使用较低分辨率的图像或其他资源,直到图像加载
  • 根本不使用该图片

我有一种预感,如果图像源设置得足够早 - WinRT会在显示新页面之前等待一小段时间(几分之一秒),以便在图像开始运行转换之前为图像提供加载的机会动画等,因此在加载更高分辨率之前完全降低图像分辨率或使用较低分辨率是一种方法。

还有一个选择是让背景位于根框架之外 - 例如修改App.xaml.cs以使网格以root视觉方式显示,并将背景图像和框架放在其中,以便随时更改图像。

答案 1 :(得分:0)

这是一种奇怪的行为, 但是,您可以尝试选择较小尺寸/分辨率的图像以优化渲染时间。

另外,尝试在Page的构造函数中设置背景图像 - 因为,Microsoft可能(我不确定)通过异步操作处理XAML解析

答案 2 :(得分:0)

而不是ImageBrush尝试使用常规Image并将CashMode属性设置为“ BitmapCache ”:

<Grid>
    <Image Source="ms-appx:////Images/image.png"
           CacheMode="BitmapCache" />

    <!-- Your other content above background image -->
</Grid>