2012-07-20 59 views
0

我正在城市應用程序中工作。如何獲取城域(UWP)中BitmapImage的寬度和高度?

而且我使用BitmapImage,其中由於構造我設置了Uri,但我意識到,所有的時間PixelWidthPixelHeight回報0(我也該Uri是正確的驗證)。

我找不到另一個返回這些屬性的類。我在想如果有辦法通過字節數組或類似的東西來獲取這些數據。你怎麼看?

+0

假設您正在從本地文件系統/資源加載,請嘗試等待,直到加載位圖的下一個主線程循環。如果來自網絡/ Internet源,則可能需要等待一段時間它下載。 – 2012-07-20 01:40:34

回答

1

檢查CacheOption屬性並將其設置爲BitmapCacheOption.None。您也可以嘗試轉換爲WriteableBitmap。 如果我說的不是真的,對不起,因爲我無法測試。 XAML(WPF只)的xD

+0

我已經將CacheOption設置爲BitmapCacheOption.None並且不起作用 – 2012-07-20 03:33:20

+0

請記住,在將圖像傳遞到源代碼之前,必須先更改BitmapCache。那麼試着施放一個WriteableBitmap .... – 2012-07-20 13:50:43

0

BitmapImage返回0PixelWidthPixelHeight如果未加載圖像。圖像僅在實際使用時加載,例如分配給Image.Source並顯示。這是...有問題。使用BitmapCacheOption.None沒有幫助,它只適用於WP7。

正確的解決方案是使用BitmapDecoder

var stream = await storageFile.OpenReadAsync(); 
var decoder = await BitmapDecoder.CreateAsync(stream); 
var size = new BitmapSize { Width = decoder.PixelWidth, Height = decoder.PixelHeight }; 

實測值this solution on MSDN forums