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

來源:互聯網
上載者:User

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

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。

2. 圖片編譯方式

Windows Phone 7中圖片為Resource和Content的區別: 產生方式為Resource的圖片會被編譯到應用程式集(DLL)裡,而產生方式為Content的圖片則會被部署到XAP包中。當你把你的圖片copy到項目中,圖片的產生動作預設是資源(Resource),但我通常選擇Content以擷取更快的速度。我們應該如何選擇圖片的產生方式(Build Action)呢? 每種產生方式都有其用武之地:設定產生方式為Content意味著應用程式可以更快的載入圖片資源;將產生方式設為Resource對你重新部署程式非常有用,這對類庫項目十分合適的。

 另外一個小區別是在引用的時候,斜杠(/ & \)的方向:

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

 

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

3.  圖片載入方式

我們可以使用非同步或者同步載入的方式去載入圖片。 
設定其UriSource是非同步載入:BitmapImage.UriSource = uriSource;
設定其檔案流是同步載入: BitmapImage.SetSource(stream); 
 注意非同步載入圖片並不是完全開啟另外一個線程去操作的,因為正在下載的圖片的解碼工作還是發生的主要的UI線程上的。下面是非同步與同步載入的一點總結:
如果你同步載入一個不存在的圖片檔案,你會得到一個異常;
如果你非同步載入一個不存在的圖片檔案,ImageFailed事件被觸發(如果你註冊了這個事件);
如果你同步載入一個存在的圖片檔案,當載入完成時ImageOpened事件被觸發;
如果你非同步載入一個存在的圖片檔案,當載入完成時ImageOpened事件不會被觸發。

4. 圖片緩衝

 圖片緩衝是一個很好用的功能,如果使用得當會將你應用程式的效能提高不少,Bitmap緩衝將可視化元素(visual elements)儲存為bitmap在他們第一次被渲染的時候,以後你如果用到這個元素,不會再去渲染他而是使用緩衝的bitmap 

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 image size to 2000 x 2000 pixels, which is the size limit of images in Windows Phone environment. Larger images will be sampled at a lower resolution. Also, if you use images that are larger than 2000 x 2000 pixels, they will be significantly slower to appear.

7.圖片選取器

我們的應用中可能需要提供使用者自己選擇的圖片的功能,這時候PhotoChooserTask就有用武之地了,他有一個Completed事件,返回的是選中照片的檔案流,我們可以將流設定到頁面中的圖片控制項中,其常見的用法如下:
 
 這裡有個小技巧跟大家分享下:PhotoChooserTask 可以返回指定像素的圖片,即如果你只想擷取圖片中的部分作為返回,你只需要設定task的PixelHeight與PixelWidth即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.