我使用 C#,wpf。我有一张图片,它以以下形式存储:byte[ ]
public interface IFile
{
int Id { get; set; }
byte[] FileData { get; set; }
string FileName { get; set; }
int? FileSize { get; set; }
string FileExtension { get; set; }
}
如何在表单上显示我的图像 (FileData byte[ ])?
<GroupBox BorderThickness="1">
<Image Source="..."/>
</GroupBox>
如果我从 byte[ ] 创建一个临时文件,我必须在 Source="..."
中写入吗?
最佳答案
假设您有一个实现了IFile
接口(interface)的 View 模型类,并且它的FileData
属性包含一个像PNG 或JPEG 这样的编码图像缓冲区,您可以直接像这样绑定(bind)到属性:
<Image Source="{Binding FileData}"/>
这是因为 WPF 提供了从多种源类型(包括 byte[]
)到 ImageSource
的内置自动类型转换。
类型转换由类ImageSourceConverter
进行,注册为TypeConverter
[TypeConverterAttribute(typeof(ImageSourceConverter))]
public abstract class ImageSource ...
并做类似的事情:
byte[] buffer = ...
ImageSource result;
using (var stream = new MemoryStream(buffer))
{
result = BitmapFrame.Create(
stream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad);
}
关于c# - 显示来自 byte[ ] 的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39365382/