该系列文件转载地址: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;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 深入理解 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 构建精确任务处理应用