我在StreamReader对象中有一个PNG格式的图像。我想在我的WPF表单上显示它。最简单的方法是什么?
我在表单上添加了Image
控件,但我不知道如何设置它。
答案 0 :(得分:2)
Image.Source
属性要求您提供BitmapSource
实例。要从PNG创建此项,您需要对其进行解码。请在此处查看相关问题:
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。