Windows Phone 實用開發技巧(10):Windows Phone 中處理圖片的技巧

 在開發Windows Phone應用程序的時候,或多或少會與圖片打交道,下面總結下Windows Phone 中處理圖片的一些技巧html

1.  圖片格式.
2.  圖片編譯方式
3.  圖片加載方式
4.  圖片緩存
5.  GIF圖片
6.  圖片大小限制
7. 圖片選擇器

1.  圖片格式緩存

 咱們知道在Windows Phone 中只支持JPG與PNG格式的圖片,藉助ImageTools類庫咱們能夠在Windows Phone 中使用GIF圖片。在Windows Phone 中推薦優先使用JPG格式的圖片,由於在Windows Phone 中JPG圖片的解碼速度比PNG快,固然比GIF更快。除非是有透明背景的要求使用PNG圖片,不然推薦使用JPG圖片。除非要使用GIF動態圖片,建議少使用ImageTools。app

2. 圖片編譯方式異步

 

Windows Phone 7中圖片爲Resource和Content的區別: 生成方式爲Resource的圖片會被編譯到應用程序集(DLL)裏,而生成方式爲Content的圖片則會被部署到XAP包中。
當你把你的圖片copy到項目中,圖片的生成動做默認是資源(Resource),但我一般選擇Content以獲取更快的速度。咱們應該如何選擇圖片的生成方式(Build Action)呢? 每種生成方式都有其用武之地:設置生成方式爲Content意味着應用程序能夠更快的加載圖片資源;將生成方式設爲Resource對你從新部署程序很是有用,這對類庫項目十分合適的。
 另一個小區別是在引用的時候,斜槓(/ & \)的方向:

 

Content: <Image Source="/ImagesAsContent/smiley1.png"/>   ide

Resource: <Image Source="..\ImagesAsResource\smiley3.png"/> 性能

3.  圖片加載方式ui

咱們可使用異步或者同步加載的方式去加載圖片。 
設置其UriSource是異步加載:BitmapImage.UriSource = uriSource;
設置其文件流是同步加載: BitmapImage.SetSource(stream);   注意異步加載圖片並非徹底開啓另一個線程去操做的,由於正在下載的圖片的解碼工做仍是發生的主要的UI線程上的。下面是異步與同步加載的一點總結:
若是你同步加載一個不存在的圖片文件,你會獲得一個異常;
若是你異步加載一個不存在的圖片文件,ImageFailed事件被觸發(若是你註冊了這個事件);
若是你同步加載一個存在的圖片文件,當加載完成時ImageOpened事件被觸發;
若是你異步加載一個存在的圖片文件,當加載完成時ImageOpened事件不會被觸發。

4. 圖片緩存url

 圖片緩存是一個很好用的功能,若是使用得當會將你應用程序的性能提升很多,Bitmap緩存將可視化元素(visual elements)保存爲bitmap在他們第一次被渲染的時候,之後你若是用到這個元素,不會再去渲染他而是使用緩存的bitmap spa

5. GIF圖片線程

 關於若是在Windows Phone 中顯示GIF圖片,我專門寫過一篇博客介紹,如須要你們能夠去看看 Windows Phone 實用開發技巧(8):在Windows Phone顯示GIF圖片 

6. 圖片大小限制

因爲屏幕大小限制,在Windows Phone對圖片的分辨率也有必定的限制。MS推薦在Windows Phone 中使用圖片的分辨率不要超過2000*2000
Due to the limited screen resolution of Windows Phone, another way to optimize performance is to limit the p_w_picpath size to 2000 x 2000 pixels, which is the size limit of p_w_picpaths in Windows Phone environment. Larger p_w_picpaths will be sampled at a lower resolution. Also, if you use p_w_picpaths that are larger than 2000 x 2000 pixels, they will be significantly slower to appear.

7.圖片選擇器

咱們的應用中可能須要提供用戶本身選擇的圖片的功能,這時候PhotoChooserTask就有用武之地了,他有一個Completed事件,返回的是選中照片的文件流,咱們能夠將流設置到頁面中的圖片控件中,其常見的用法以下:
 
 這裏有個小技巧跟你們分享下: PhotoChooserTask  能夠返回指定像素的圖片,即若是你只想獲取圖片中的部分做爲返回,你只須要設置task的 PixelHeight與PixelWidth 便可。
相關文章
相關標籤/搜索