c# winform中 reportviewer中如何动态的显示图片

首先要在报表中添加 image控件 source选择database mimetype 我这里选择的是 image/bmp
value 值选择数据集中定义好的 字段,我这里定义名称为:Image value对应的表达式为:=Fields!Image.Value
这里的value 解释如下:
对于 Value,键入或选择一个计算结果为图像来源的表达式。

如果 Source 属性设置为 External,则表达式的计算结果必须是图像的有效路径。此路径可以是驻留在报表服务器上的图像的静态路径,也可以是基于某个字段的路径。如果图像存储在项目中,则键入该图像在项目中显示的名称。

如果 Source 属性设置为 Embedded,则表达式的计算结果必须是嵌入到报表中的图像的名称。如果 Source 属性设置为 Database,则表达式的计算结果必须是包含二进制图像数据的字段。

将动态的图片转换成对应的二进制数组

private byte[] BitmapToBytes(Bitmap Bitmap)
    {
        MemoryStream ms = null;
        try
        {
            ms = new MemoryStream();
            Bitmap.Save(ms, ImageFormat.Gif);
            byte[] byteImage = new Byte[ms.Length];
            byteImage = ms.ToArray();
            return byteImage;
        }
        catch (ArgumentNullException ex)
        {
            throw ex;
        }
        finally
        {
            ms.Close();
        }
    }
   //把图片转换成二进制数组
   bytes[] imgBytes = BitmapToBytes(bmp);
 DataTable dt = new DataTable();
            dt.Columns.Add("Number",typeof(string));
            dt.Columns.Add("Name", typeof(string));
            dt.Columns.Add("Age", typeof(string));
            //这里要在报表中显示员工头像,在列中定义的类型应为string 类型 在通过Convert.ToBase64String(byteImages)
            //把图片转换成二进制后显示到报表中
            dt.Columns.Add("Image", typeof(string));
            DataRow row = dt.NewRow();
            row["Number"] = txtNo.Text;
            row["Name"] = txtName.Text;
            row["Age"] = txtAge.Text;
            //这里的Image应和数据集中定义的列值一致否则不加载图片
            //这句代码很关键
            row["Image"] = Convert.ToBase64String(imgBytes );
            dt.Rows.Add(row);
            reportViewer1.LocalReport.EnableExternalImages = true;
            reportViewer1.LocalReport.ReportPath = @"d:\my documents\visual studio 2012\Projects\LYHR\LyWinForm\humenfile\Report1.rdlc";
            reportViewer1.LocalReport.DataSources.Clear();
            reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", dt));
            reportViewer1.RefreshReport();
   在打印预览的时候图片就显示到报表中了
  附:https://blog.csdn.net/giepy/article/details/79760047
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值