在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[]
。
我必须做些什么才能只显示一个图像
我已经尝试过ImageGetter
和Renderer
属性,但没有成功。
如果将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);