C# wpf应用程序中的图像控制不';不能正确地显示图像
若实际图像的大小大于控件的属性,我会使图像失真。例如:图像为800x600,控件仅为200x200C# wpf应用程序中的图像控制不';不能正确地显示图像,c#,wpf,image,C#,Wpf,Image,若实际图像的大小大于控件的属性,我会使图像失真。例如:图像为800x600,控件仅为200x200 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 = loadImageFromArr
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];
}
}
尝试播放图像。拉伸,但没有一个值不能正确显示。我想控制调整图像大小而不裁剪和显示它。图像为jpeg格式
VS2013,WPF,netfw 4.0
抱歉,伙计们,我找到了答案。BitmapCacheOptions中包含问题。使用BitmapCacheOption.OnLoad,一切都很好。不知道为什么OnDemand仅适用于小图像。将发布作为答案。当您设置内容时,内容将调整大小以适应目标维度,同时保留其本机纵横比
System.Windows.Controls.Image im = new System.Windows.Controls.Image();
im.Stretch = Stretch.Uniform;
im.MaxHeight = 200;
im.MaxWidth = 200;
问题出在缓存选项中。正如克莱门斯指出的,如果您希望在创建位图后关闭
bitmapStream
,我们需要选择OnLoad
cache选项 请参阅备注部分,了解从加载后立即关闭的流加载位图帧时为什么必须使用OnLoad
。