如果實際圖像的尺寸大於控件的屬性,則圖像失真。例如:圖片是800×600,控制只有200×200wpf應用程序中的圖像控制無法正常顯示圖像
System.Windows.Controls.Image im = new System.Windows.Controls.Image();
im.Stretch = Stretch.None ;
im.Width = 200;
im.Height = 200;
im.Margin = new Thickness(5, 5, 5, 5);
im.Source = loadImageFromArray(m_imgs[f]);
private BitmapSource loadImageFromArray(Byte[] imageData)
{
using (MemoryStream ms = new MemoryStream(imageData))
{
var decoder = BitmapDecoder.Create(ms,
BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnDemand);
return decoder.Frames[0];
}
}
試圖與Image.Stretch玩,但沒有它的價值並沒有給予適當的顯示。我想控制調整圖像的大小,而不是裁剪並顯示它。圖像採用jpeg格式。
VS2013,WPF,netfw 4.0。
UPD:對不起,但我找到了答案。問題包含在BitmapCacheOptions中。隨着BitmapCacheOption.OnLoad所有的偉大作品。不知道爲什麼OnDemand只適用於小圖片才能正常工作。將帖子作爲答案。
請參閱備註一節[此處](http://msdn.microsoft.com/zh-cn/library/ms615998.aspx),以解釋爲什麼從流中加載BitmapFrame時必須使用'OnLoad'將在裝載後立即關閉。 – Clemens 2014-09-20 16:00:59