2011-03-31 62 views
0

我想獲得一個圖像的高度像下面如何獲得寬度和高度的圖像

BitmapImage bitmap = new BitmapImage(new Uri("Images/header.png",UriKind.RelativeOrAbsolute)); 
Debug.WriteLine("bitmap.PixelHeight : " + bitmap.PixelHeight); 

它打印高度爲0,但實際圖像的高度爲35個像素。它不是從服務器加載的圖像。它存儲在應用程序包本身內部。

+0

以後在項目中使用位圖嗎? – Polhovskiy 2011-03-31 06:21:06

回答

1

您稍後在項目中使用位圖嗎?如果您將它用作圖像源,則可以嘗試Image.ActualHeight和Image.ActualWidth

+0

我將它添加爲圖像的來源。我嘗試了ActualHeght和ActualWidth,這些也只給0。但是我可以看到圖像被添加到畫布上。 – saikamesh 2011-03-31 06:54:08

+0

嘗試在Image.ImageOpened事件發生後獲取ActualHeight寬度 – Polhovskiy 2011-04-02 07:33:43

1

如果它沒有從服務器加載,它仍然可以異步加載和處理。如果您在知道圖像可見後使用相同的Debug.WriteLine調用,那麼是否會給出正確的結果?

+0

你能告訴我如何檢查圖像是否可見 – saikamesh 2011-03-31 06:02:09

+0

或者你可以嘗試訂閱一個事件bitmapImage.ImageOpened – Polhovskiy 2011-03-31 06:24:56

+0

@saikamesh:爲了測試的目的,我想你可以有一個按鈕來做日誌記錄。 ..只是爲了檢查時機真的*是問題。 – 2011-03-31 06:28:00

0

必須先等待ImageOpened事件,然後才能獲取寬度/高度值。這是因爲BitmapImage是從URI加載時(即使文件是本地的)異步創建的。只有從流中加載時,它纔會同步創建。

要注意的另一件事是BitmapImage.CreateOption默認設置爲DelayCreation,這意味着它只會在將BitmapImage分配給活動樹中的元素時創建。你可以設置CreateOption = None來改變它。

相關問題