Silverlight + Bitmapcache:无法让它工作

时间:2012-09-17 12:48:34

标签: c# performance silverlight bitmapcache

我正在优化一个使用大量图像(GIS样式,显示平铺图像,缩放/平移等)的silverlight应用程序,我正在考虑使用位图缓存功能,它应该将一堆东西卸载到GPU。

然而,我似乎无法让它发挥作用。我的主页包含正确的参数(我认为?):

    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
        <param name="EnableCacheVisualization" value="true" />
        <param name="EnableGPUAcceleration" value="true" />
        <param name="EnableFramerateCounter" value="true" />
      <param name="source" value="ClientBin/BitmapCaching.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="white" />
      <param name="minRuntimeVersion" value="5.0.61118.0" />
      <param name="autoUpgrade" value="true" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
      </a>
    </object>

我的xaml也应启用缓存:

<UserControl x:Class="BitmapCaching.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White" CacheMode="BitmapCache">
        <Rectangle x:Name="img" Width="200" Height="200" Stroke="Black">
            <Rectangle.Fill>
                <ImageBrush ImageSource="/BitmapCaching;component/download.jpg" />
            </Rectangle.Fill>
            <Rectangle.RenderTransform>
                <RotateTransform />
            </Rectangle.RenderTransform>
        </Rectangle>
        <Button Content="Scale" Height="40" Width="100" Click="Button_Click" />
    </Grid>
</UserControl>

(是的,我知道将cachemode放在根元素上并不聪明)

但是,当我启动应用程序时,完整的应用程序会显示红色的叠加层。这应该表明没有任何缓存。

我已经读过你需要最近的GFX卡驱动程序,但这应该没问题。这台机器有一个ATI Radeon HD5450显卡与最近的驱动程序。我无法想象这还不够吗?

我很难过。如果有人知道如何解决这个问题,请让我免于疯狂!

0 个答案:

没有答案