在DataListView中将绑定字节数组显示为图像

本文关键字:数组 显示 图像 字节数 字节 DataListView 绑定 | 更新日期: 2023-09-27 17:58:04

我使用的是ObjectListView控件集,特别是DataListView。这是我的密码。

控件的Datasource

dataListView1.DataSource = this.ViewModel.DataSet;

其中DataSet由填充

this.ViewModel.DataSet = HSGlobals.ctx.Entities<Product>().All()
                        .Where(p => productIdList.Contains(p.Id)).Select(p => new
                        {
                            Nazwa = p.Name,
                            Kod = p.Code,
                            Dostępność = p.AvaibleQuantity,
                            Typ = p.ProductType.Name,
                            Miara = p.MeasureUnit.Name,
                            Grafika = p.ProductImage.Image
                        }).ToList();

Grafika是一个字节数组,是从数据库中获取的图像。

当显示dataListView时,Grafika列仅显示该字段的类型System.byte[]

我必须做些什么才能只显示一个图像

我已经尝试过ImageGetterRenderer属性,但没有成功。

在DataListView中将绑定字节数组显示为图像

如果将BrightIdeasSoftware.ImageRenderer的实例附加到列的Renderer,那么初始方法应该可以工作。

对于ImageRenderer,图像可以来源于:

  • 字节数组(通常当要显示的图像作为值存储在数据库中时)
  • 一个int,它被视为图像列表的索引
  • 一个字符串,它首先被视为文件名,如果失败,则被视为图像列表的索引
  • 将被绘制为连续图像的int或字符串的集合

假设你的字节流包含有效的数据来创建位图,这应该可以做到。

编辑:还要确保OLV的OwnerDraw属性设置为true,IIRC这是绘制自定义图像的要求。

假设您的字节数组是一个有效的映像,使用内存流消耗字节数组,然后构造位图:

var ms = new MemoryStream(yourImageByteArray);
var image = new Bitmap(ms)

然后将您的图像绑定到DataList。

编辑

要添加到对象视图列表图像列表,您需要执行以下操作:

this.listView.LargeImageList.Images.Add(yourImages);