【问题标题】:Images taking long time to load WinRT XAML加载 WinRT XAML 需要很长时间的图像
【发布时间】:2016-06-10 07:15:08
【问题描述】:

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

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

我们正在设置背景如下

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

请告诉我,我们可以做些什么来解决这个问题。

谢谢。

【问题讨论】:

    标签: performance xaml windows-runtime imagebrush


    【解决方案1】:

    你可以

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

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

    另一种选择是让背景位于根框架之外 - 例如修改 App.xaml.cs 以将网格作为根视觉对象,并将背景图像和框架放入其中,以便您可以随时更改图像。

    【讨论】:

    • 实际网格背景图片大小为 1.5 MB,分辨率为 1366x768,覆盖整个设备屏幕并作为我页面的背景。因此,如果我更改分辨率,加载时间会比拉伸它看起来不好。
    • 背景图像经常被洗掉,在这种情况下,较低的分辨率并不是那么刺耳,但您可以使用其他工具来修复它。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      <Grid>
          <Image Source="ms-appx:////Images/image.png"
                 CacheMode="BitmapCache" />
      
          <!-- Your other content above background image -->
      </Grid>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-26
        • 1970-01-01
        • 2017-05-01
        • 2021-05-14
        • 2012-06-24
        • 2017-08-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多