在Windows Phone7應用程式中包含圖片時有很多的技巧可用以最佳化效能。本節將討論這些話題。
選擇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)擴充方法來載入圖片。以下代碼示範了載入大圖片的推薦方法。
1234 |
<StackPanel> <Image Height="3000" Width="3000" Name="image1" Stretch="Fill" /> <Button Content="Load" Height="70" Width="152" Click="btnLoad_Click" /></StackPanel> |
123456789101112 |
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;} |