【发布时间】:2012-02-07 02:55:13
【问题描述】:
我在 StreamReader 对象中有一个 PNG 格式的图像。我想在我的 WPF 表单上显示它。最简单的方法是什么?
我在表单上放了一个Image 控件,但我不知道如何设置。
【问题讨论】:
标签: wpf image streamreader
我在 StreamReader 对象中有一个 PNG 格式的图像。我想在我的 WPF 表单上显示它。最简单的方法是什么?
我在表单上放了一个Image 控件,但我不知道如何设置。
【问题讨论】:
标签: wpf image streamreader
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;
【讨论】:
这似乎有效:
image1.Source = BitmapFrame.Create(myStreamReader.BaseStream);
【讨论】:
我会直接生成 Stream,而不是使用 StreamReader,
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。
【讨论】: