2016-03-11 60 views
0

我試圖適合我的屏幕範圍內的多個圖像。我正在使用堆棧面板,看到這是我最終目標的最佳佈局。 應該打開來自用戶本地機器的圖像並將其添加到堆棧面板,直到沒有更多的屏幕空間可用。C#問題採購圖像大小 - WPF

我正在運行的問題是,當我將我的位圖加載到內存中時,它向我提供了一個不準確的寬度(它提供了DPI寬度,但我希望它在屏幕上保留的最終寬度)。理想情況下,如果你的屏幕寬度是1000我會想要加載圖像,直到1000或近1000寬度已經在屏幕上使用,這是困難的,如果我不能源的圖像的寬度(類似於什麼窗口會給我的寬度,如果我看着在資源管理器的文件)

我使用下列位圖加載到內存中:

  BitmapImage bitmap = new BitmapImage(); 
      bitmap.BeginInit(); 
      bitmap.UriSource = new Uri(fullFilePath, UriKind.Absolute); 
      bitmap.EndInit(); 
      MessageBox.Show(bitmap.Height.ToString() + "is the height. this is the width->" + bitmap.Width.ToString()); 

我得到的結果是: 1728是高度
1152是寬度

實際上是864 x 1296(jpg圖像) 。

這些圖像是在一個堆棧面板中,是否可以提取特定堆棧面板子的大小? 例子stackpannel.children[0].width有什麼影響?

回答

0

至於BitmapImage,要獲得其原始圖像大小,請檢查PixelWidthPixelHeight而不是WidthHeight。這是因爲WidthHeight值是使用元數據中包含的分辨率信息進行調整的。

例如,如果原來的寬度是864和X包含在Exif數據中分辨率是72,因爲WPF的標準DPI是96,Width將七十二分之八百六十四* 96 = 1152

+0

優秀的感謝,你知道一種方式,我可以找出它有多大,最終在屏幕上?我願意使用網格作爲其父項或任何其他方法,這樣可以讓我在總體上獲得圖片寬度/高度或堆疊面板堆棧的準確性。 – ModS

+0

要獲取「Grid」或「Image」控件的實際渲染大小,請參閱其「ActualWidth」和「ActualHeight」。請注意,除非您設置應用程序的DPI知曉度,否則這些值在每個顯示器DPI環境下可能不相關。 – emoacht