随笔 - 681, 文章 - 0, 评论 - 46, 阅读 - 36万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

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

Posted on   星尘的天空  阅读(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;
}

编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 语音处理 开源项目 EchoSharp
· 《HelloGitHub》第 106 期
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示