博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

WP7 App性能优化(1):图片

Posted on 2011-03-08 10:44  星尘的天空  阅读(175)  评论(0编辑  收藏  举报

该系列文件转载地址:http://www.gwewe.com/dev/topics/1012150823.html

WP7 App性能优化(1):图片

选择JPG还是PNG格式


一个最简单的提高性能的方法就是使用合适的图片格式。Windows Phone中支持两种图片格式:JPG和PNG。通常,JPG格式解码速度比PNG更快,所以所有情况下都应该优先考虑JPG图片,除非,图片要使用透明的情况,此时必须用PNG,因为JPG不支持透明。
 

选择图片还是XAML


在Expression
Design中做设计时,可以创建很复杂的图形效果。这些图形可以导出为XAML也可以导出为图片文件。当图形为静态图形时,应当考虑将其存储为图片而不是XAML。实际显示时,相比图片的解码与渲染两个过程,XAML可能需要更多的处理。XAML需要解析XAML、在视图树中创建对象、渲染对象。例如,在创建一个下棋游戏时,你可能会用Expression
Design为每个棋子创建一个很复杂的图形效果。但是,因为棋子是静态的,所以从性能考虑应该将棋子导出为图片而不是XAML.
 

限制图片大小


受限于手机有限的屏幕分辨率,另一个优化性能的方法是限制图片大小在2000*2000以内,这也是WP7环境下图片的大小上限。更大的图片应在低分辨率下取样后显示。如果图片大于2000*2000其显示会明显减慢。

如果必须使用2000*2000以上的图片,那么应该每次只显示图片的一部分。你可以通过先将图片载入到一个T:System.Windows.Media.Imaging.WriteableBitmap中,然后使用LoadJpeg(WriteableBitmap,
Stream)
扩展方法来载入图片。以下代码示范了载入大图片的推荐方法。

下载代码

<StackPanel>

        <Image Height="3000" Width="3000" Name="image1" Stretch="Fill" />

        <Button Content="Load" Height="70" Width="152" Click="btnLoad_Click" />

</StackPanel>
private void btnLoad_Click(object sender, RoutedEventArgs e)
{
   StreamResourceInfo sri = null;
   Uri uri = new Uri("LoadJpegSample;component/Test3k3k.JPG", UriKind.Relative);
   sri = Application.GetResourceStream(uri);
 

WriteableBitmap wb = new WriteableBitmap((int)this.image1.Width, (int)this.image1.Height);

Extensions.LoadJpeg(wb, sri.Stream);
this.image1.Source = wb;
}