稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存

[索引页]

[源码下载]


稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存, 合并 ResourceDictionary, 应用程序扩展服务, Silverlight 插件对象


作者:webabcd


介绍
Silverlight 3.0 提示和技巧系列
  • GPU 加速 - 对 GPU 加速的支持
  • Out-Of-Browser -  浏览器外运行,即支持脱离浏览器运行
  • 应用程序库缓存 - 将 dll(zip) 缓存到客户端浏览器中 
  • 合并 ResourceDictionary - 整合不同位置的 ResourceDictionary 
  • 应用程序扩展服务 - 通过扩展 Application 来提供附加服务
  • Silverlight 插件对象的新增功能 - 在 Silverlight 3.0 中 Silverlight 插件对象的新增功能


在线DEMO
http://webabcd.blog.51cto.com/1787395/342289 


示例
1、如何实现 GPU 加速
GPU.xaml
<navigation:Page x:Class="Silverlight30.Tip.GPU"    
                     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" 
                     xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" 
                     d:DesignWidth="640" d:DesignHeight="480" 
                     Title="GPU Page"> 
        <Grid x:Name="LayoutRoot"> 

                <Grid.Resources> 
                        <Storyboard x:Name="ani" AutoReverse="True" RepeatBehavior="Forever"> 
                                <DoubleAnimation Storyboard.TargetName="st" Storyboard.TargetProperty="ScaleX" 
                                        From="1" To="3" Duration="0:0:3" /> 
                                <DoubleAnimation Storyboard.TargetName="st" Storyboard.TargetProperty="ScaleY" 
                                        From="1" To="3" Duration="0:0:3" /> 
                                <DoubleAnimation Storyboard.TargetName="rt" Storyboard.TargetProperty="Angle" 
                                        From="0" To="360" Duration="0:0:3" /> 
                                <DoubleAnimation Storyboard.TargetName="mediaElement" Storyboard.TargetProperty="Opacity" 
                                        From="1" To="0.3" Duration="0:0:3" /> 
                        </Storyboard> 
                </Grid.Resources> 

                <MediaElement x:Name="mediaElement" Source="/Resource/Demo.mp4" Width="320" Height="240" 
                        AutoPlay="True" MediaEnded="mediaElement_MediaEnded" RenderTransformOrigin="0.5,0.5"> 
                        <MediaElement.RenderTransform> 
                                <TransformGroup> 
                                        <ScaleTransform x:Name="st" ScaleX="1" ScaleY="1" /> 
                                        <RotateTransform x:Name="rt" Angle="0" /> 
                                </TransformGroup> 
                        </MediaElement.RenderTransform> 
                         
                        <!-- 
                                CacheMode - 缓存类型,用于 GPU 加速,当前只支持 BitmapCache(用 CPU 呈现 UIElement 一次,其结果位图会被缓存到 GPU, 然后通过 GPU 处理) 
                                        可被 GPU 加速的有: Scale, Rotate, Opacity, 矩形的Clip 
                                CacheMode.RenderAtScale - 位图缓存相对于当前呈现的 UIElement 的放大倍数。由于需要缓存为位图,而对于 Silverlight 的矢量图形来讲,则可以设置此属性以尽可能避免失真(当然,此值设置得越高,GPU 的负担也会越重) 
                        --> 
                        <MediaElement.CacheMode> 
                                <BitmapCache RenderAtScale="1" /> 
                        </MediaElement.CacheMode> 
                </MediaElement> 
                 
                <Image Source="/Resource/Logo.jpg" Width="160" Height="120" /> 

        </Grid> 
</navigation:Page>

GPU.xaml.cs
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Collections.Generic; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Linq; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Net; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Controls; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Documents; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Input; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Media; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Media.Animation; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Shapes; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Navigation; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存namespace Silverlight30.Tip 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存        public partial class GPU : Page 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存        { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                public GPU() 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        InitializeComponent(); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        this.Loaded += new RoutedEventHandler(GPU_Loaded); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                void GPU_Loaded(object sender, RoutedEventArgs e) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        ani.Begin(); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                private void mediaElement_MediaEnded(object sender, RoutedEventArgs e) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        // 重播 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        mediaElement.Stop(); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        mediaElement.Play(); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存        } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存}
 
GPUTestPage.html(宿主页)
<div id="silverlightControlHost"> 
                <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" 
                        width="100%" height="100%"> 
                        <param name="source" value="ClientBin/Silverlight30.xap" /> 
                        <param name="onError" value="onSilverlightError" /> 
                        <param name="background" value="white" /> 
                        <param name="minRuntimeVersion" value="3.0.40624.0" /> 
                        <param name="autoUpgrade" value="true" /> 
                        <!--enableGPUAcceleration - 是否启用 GPU 加速--> 
                        <param name="enableGPUAcceleration" value="true" /> 
                        <!--enableCacheVisualization - 是否将缓存区域可视化--> 
                        <!-- 
                            如果该属性为 true 则: 
                                    本身的颜色代表被缓存的对象 
                                    红色代表未被缓存的对象 
                                    绿色代表被自动缓存的对象。如果某对象在被缓存对象的上面,那么该对象会被自动缓存 
                    --> 
                        <param name="enableCacheVisualization" value="true" /> 
                        <!--enableFramerateCounter - 是否显示帧率的相关信息--> 
                        <!-- 
                            显示的信息在 Silverlight 程序的左上角以黑底白字做显示: 
                                    第一个参数:帧率(FPS) 
                                    第二个参数:GPU 的内存的使用情况。单位:KB 
                    --> 
                        <param name="enableFramerateCounter" value="true" /> 
                        <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration: none"> 
                                <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" 
                                        style="border-style: none" /> 
                        </a> 
                </object> 
                <iframe id="_sl_historyFrame" style="visibility: hidden; height: 0px; width: 0px; 
                        border: 0px"></iframe> 
        </div>
 
 
2、Out-Of-Browser(对浏览器外运行的支持)
OutOfBrowser.xaml
<navigation:Page x:Class="Silverlight30.Tip.OutOfBrowser"    
                     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" 
                     xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" 
                     d:DesignWidth="640" d:DesignHeight="480" 
                     Title="OutOfBrowser Page"> 
        <Grid x:Name="LayoutRoot"> 

                <!--安装/卸载按钮-->         
                <Button x:Name="button" Click="button_Click" Width="100" Height="30" /> 
                 
        </Grid> 
</navigation:Page>
 
OutOfBrowser.xaml.cs
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存/* 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 * Application.InstallStateChanged - 浏览器外运行的相关状态发生改变时所触发的事件 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 * Application.InstallState - 浏览器外运行的相关状态 [System.Windows.InstallState 枚举] 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 *         NotInstalled - 在浏览器中运行 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 *         Installing - 安装到桌面中 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 *         Installed - 在浏览器外运行 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 *         InstallFailed - 安装到桌面的过程中发生错误 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 * Application.IsRunningOutOfBrowser - 当前程序是否是从浏览器外启动的 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 * Application.Install() - 安装 Silverlight 程序到浏览器外(卸载只能通过右键菜单的方式卸载) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 * Application.CheckAndDownloadUpdateAsync, Application.CheckAndDownloadUpdateCompleted - 一对异步方法/事件,用于更新浏览器外运行的 Silverlight 程序(从服务器上下载新的版本) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 *    
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 * 注:在 Silverlight 项目上单击右键 -> 属性 -> Out-of-Browser Settings 可以对“浏览器外运行”的相关参数做设置(也可以手动修改 Properties/OutOfBrowserSettings.xml) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 */
 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Collections.Generic; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Linq; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Net; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Controls; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Documents; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Input; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Media; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Media.Animation; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Shapes; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Navigation; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存namespace Silverlight30.Tip 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存        public partial class OutOfBrowser : Page 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存        { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                public OutOfBrowser() 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        InitializeComponent(); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                         
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        this.Loaded += new RoutedEventHandler(OutOfBrowser_Loaded); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                void OutOfBrowser_Loaded(object sender, RoutedEventArgs e) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        InitButton(); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        App.Current.InstallStateChanged += new EventHandler(Current_InstallStateChanged); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                void Current_InstallStateChanged(object sender, EventArgs e) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        InitButton(); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                private void InitButton() 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        if (App.Current.IsRunningOutOfBrowser) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                                button.Content = "卸载"
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        else 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                                button.Content = "安装"
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                private void button_Click(object sender, RoutedEventArgs e) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        if (!App.Current.IsRunningOutOfBrowser && App.Current.InstallState == InstallState.NotInstalled) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                                App.Current.Install(); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        else 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                                MessageBox.Show("请右键卸载"); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存        } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存}
 
 
3、应用程序库缓存的说明
ApplicationLibraryCaching.xaml
<navigation:Page x:Class="Silverlight30.Tip.ApplicationLibraryCaching"    
                     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" 
                     xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" 
                     d:DesignWidth="640" d:DesignHeight="480" 
                     Title="ApplicationLibraryCaching Page"> 
        <Grid x:Name="LayoutRoot"> 

                <TextBlock> 
                        <Run> 
                                应用程序缓存 - 将 dll 缓存到客户端浏览器中 
                        </Run> 
                        <LineBreak /> 
                        <LineBreak /> 
                        <Run> 
                                启用“应用程序缓存” - 在 Silverlight 项目上单击右键 -> 属性 -> 勾选“ Reduce XAP size by using application library caching”复选框 
                        </Run> 
                        <LineBreak /> 
                        <Run> 
                                “应用程序缓存”不能和“脱离浏览器支持”共同使用 
                        </Run> 
                        <LineBreak /> 
                        <Run> 
                                启用应用程序缓存后,可被缓存的 dll 的属性 Copy Local 会被设置为 true 
                        </Run> 
                        <LineBreak /> 
                        <Run> 
                                启用应用程序缓存后,所有可被缓存的 dll 会单独生成一个 zip 包 
                        </Run> 
                        <LineBreak /> 
                        <Run> 
                                AppManifest.xml 会增加相应的 ExternalParts。例: <Deployment.ExternalParts><ExtensionPart Source="System.Xml.Linq.zip" /></Deployment.ExternalParts> 
                        </Run> 
                </TextBlock> 
        </Grid> 
</navigation:Page>
 
 
4、合并 ResourceDictionary 的演示
App.xaml(在此处合并不同位置的 ResourceDictionary)
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    
                         x:Class="Silverlight30.App" 

        <Application.Resources> 

                <!-- 
                        以 xaml 方式整合外部 ResourceDictionary 
                --> 
                <ResourceDictionary> 
                        <ResourceDictionary.MergedDictionaries> 
                                <ResourceDictionary Source="Style/ButtonStyle1.xaml" /> 
                                <ResourceDictionary Source="Style/ButtonStyle2.xaml" /> 
                        </ResourceDictionary.MergedDictionaries> 
                </ResourceDictionary> 
                 
                <!-- 
                        以 cs 方式整合外部 ResourceDictionary 
                        ResourceDictionary dict = System.Windows.Markup.XamlReader.Load(xaml) as ResourceDictionary;    
                        Resources.MergedDictionaries.Add(dict); 
                --> 
                 
        </Application.Resources> 
         
</Application>
 
 
5、应用程序扩展服务的 Demo
App.xaml(注册服务)
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    
                         x:Class="Silverlight30.App" 
                         xmlns:svc="clr-namespace:Silverlight30.Tip" 

         
        <!-- 
                以 xaml 方式注册扩展服务 
        --> 
        <Application.ApplicationLifetimeObjects> 
                <svc:MyExtensionService /> 
        </Application.ApplicationLifetimeObjects> 
         
        <!-- 
                以 cs 方式注册扩展服务(在 App 的构造函数中) 
                ApplicationLifetimeObjects.Add(new Silverlight30.Tip.MyExtensionService()); 
        --> 
         
</Application>
 
MyExtensionService.cs
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存/* 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 * 自定义扩展服务需要实现 IApplicationService 接口或 IApplicationLifetimeAware 接口 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 * IApplicationService 接口需要实现 StartService() 方法(Application.Startup 事件之前调用)和 StopService() 方法(Application.Exit 事件之后调用) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 * IApplicationLifetimeAware 接口需要实现的方法有 Starting(), Started(), Exiting(), Exited() 其分别在 Application.Startup 事件的之前和之后调用,以及 Application.Exit 事件的之前和之后调用 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 */
 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Net; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Controls; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Documents; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Ink; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Input; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Media; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Media.Animation; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Shapes; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存namespace Silverlight30.Tip 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存        public class MyExtensionService : IApplicationService 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存        { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                public static MyExtensionService Current { get; set; } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                public string ExtensionInfo { get; set; } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                public void StartService(ApplicationServiceContext context) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        Current = this
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        ExtensionInfo = "abc xyz"
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                public void StopService() 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                         
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存        } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存}
 
ApplicationExtensionServices.xaml.cs
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Collections.Generic; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Linq; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Net; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Controls; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Documents; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Input; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Media; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Media.Animation; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Shapes; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存using System.Windows.Navigation; 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存namespace Silverlight30.Tip 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存        public partial class ApplicationExtensionServices : Page 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存        { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                public ApplicationExtensionServices() 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        InitializeComponent(); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        this.Loaded += new RoutedEventHandler(ApplicationExtensionServices_Loaded); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                void ApplicationExtensionServices_Loaded(object sender, RoutedEventArgs e) 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                { 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        // 调用自定义的扩展服务 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                        MessageBox.Show(MyExtensionService.Current.ExtensionInfo); 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存                } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存        } 
稳扎稳打Silverlight(41) - 3.0Tip/Trick之GPU 加速, Out-Of-Browser, 应用程序库缓存}
 
 
6、Silverlight 插件对象的新增功能的简要说明
Plugin.xaml
<navigation:Page x:Class="Silverlight30.Tip.Plugin"    
                     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" 
                     xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" 
                     d:DesignWidth="640" d:DesignHeight="480" 
                     Title="Plugin Page"> 
        <Grid x:Name="LayoutRoot"> 

                <TextBlock> 
                        <Run> 
                                AllowHtmlPopupWindow - 是否允许使用 HtmlPage.PopupWindow 弹出新窗口 
                        </Run> 
                        <LineBreak /> 
                        <Run> 
                                EnabledAutoZoom - 是否自动调整大小以适应浏览器的缩放 
                        </Run> 
                        <LineBreak /> 
                        <Run> 
                                EnabledNavigation - 是否可以使用 HyperlinkButton 导航到外部链接 
                        </Run> 
                        <LineBreak /> 
                        <Run> 
                                Application.Current.Host.Settings, Application.Current.Host.Content - 可对插件的一些属性和一些事件做设置 
                        </Run> 
                        <LineBreak /> 
                        <Run> 
                                EnableGPUAcceleration, EnableCacheVisualization, EnableFramerateCounter - 参见 GPUTestPage.html 中的说明 
                        </Run> 
                </TextBlock> 

        </Grid> 
</navigation:Page>
 
 



          本文转自webabcd 51CTO博客,原文链接:http://blog.51cto.com/webabcd/342772,如需转载请自行联系原作者


上一篇:Java对并发编程的支持


下一篇:惠普战66切换fn模式