我需要将byte[]转换为BitmapImage,并在WPF图像控件中显示它。(img.Source = ...)。
如果我像这样转换它:
m_photo = new BitmapImage();
using (MemoryStream stream = new MemoryStream(photo.ToArray()))
{
m_photo.BeginInit();
m_photo.StreamSource = stream;
m_photo.EndInit();
}无法将XAML绑定到源属性,因为"m_photo拥有另一个流“...我能做什么?
发布于 2012-08-16 09:48:39
在begininit之后将缓存选项设置为OnLoad
m_photo.CacheOption = BitmapCacheOption.OnLoad;编辑:完成bmp数组到图像源的代码
DrawingGroup dGroup = new DrawingGroup();
using (DrawingContext drawingContext = dGroup.Open())
{
var bmpImage = new BitmapImage();
bmpImage.BeginInit();
bmpImage.CacheOption = BitmapCacheOption.OnLoad;
bmpImage.StreamSource = new MemoryStream(photoArray);
bmpImage.EndInit();
drawingContext.DrawImage(bmpImage, new Rect(0, 0, bmpImage.PixelWidth, bmpImage.PixelHeight));
drawingContext.Close();
}
DrawingImage dImage = new DrawingImage(dGroup);
if (dImage.CanFreeze)
dImage.Freeze();
imageControl.Source = dImage;发布于 2012-08-16 14:41:16
好了,我找到解决方案了。如果在类的代码中使用此代码(将byte[]转换为bitmapSource),则会出现此错误,即对象在另一个流中。但是如果创建一个转换器(IValueConverter)并将其与XAML binding中相同的转换代码一起使用-一切都可以!
谢谢大家!
https://stackoverflow.com/questions/11979120
复制相似问题