从StreamReader设置System.Windows.Controls.Image?

时间:2011-05-23 07:32:55

标签: wpf image streamreader

我在StreamReader对象中有一个PNG格式的图像。我想在我的WPF表单上显示它。最简单的方法是什么?

我在表单上添加了Image控件,但我不知道如何设置它。

3 个答案:

答案 0 :(得分:2)

Image.Source属性要求您提供BitmapSource实例。要从PNG创建此项,您需要对其进行解码。请在此处查看相关问题:

WPF BitmapSource ImageSource

BitmapSource source = null;

PngBitmapDecoder decoder;
using (var stream = new FileStream(@"C:\Temp\logo.png", FileMode.Open, FileAccess.Read, FileShare.Read))
{
    decoder = new PngBitmapDecoder(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.None);

    if (decoder.Frames != null && decoder.Frames.Count > 0)
        source = decoder.Frames[0];
}

return source;

答案 1 :(得分:2)

这似乎有效:

 image1.Source = BitmapFrame.Create(myStreamReader.BaseStream);

答案 2 :(得分:0)

我不会使用StreamReader,而是直接生成Stream,

FileStream strm = new FileStream("myImage.png", FileMode.Open);
PngBitmapDecoder decoder = new PngBitmapDecoder(strm,
    BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
myImage.Source = decoder.Frames[0];

其中myImage是XAML中图像的名称

<Image x:Name="myImage"/> 

更新:如果您必须使用StreamReader,则可以使用.BaseStream获取Stream。