c# fastreport中图片显示总结

第一种方式:通过字节数组方式

Byte[] streamByte = SaveImage(@"C:\Users\jay\Desktop\sign.png");

report.SetParameterValue("signPath", Convert.ToBase64String(streamByte));

在fastreport中增加图片组件,在BeforePrint事件中写方法

string imgStr = (string)Report.GetParameterValue("signPath");
      byte[] imgData=Convert.FromBase64String(imgStr);
      MemoryStream ms = new MemoryStream(imgData);
      Image img = System.Drawing.Image.FromStream(ms);
      Picture1.Image=img;

上面是用的parameter传递的参数,也可以用datatable中的参数传递,只写下接收的方法

string imgStr = (string)Report.GetColumnValue("DataTable1.签名");

public byte[] SaveImage(String path)
        {
            FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); //将图片以文件流的形式进行保存
            BinaryReader br = new BinaryReader(fs);
            byte[] imgBytesIn = br.ReadBytes((int)fs.Length); //将流读入到字节数组中
            return imgBytesIn;
        }

第二种方式::通过路径方式 传递过来的C:\Users\jay\Desktop\sign.png 

//传递过来的签名为图片路径
      string imgStr = (string)Report.GetColumnValue("DataTable1.签名");
      Picture1.ImageLocation=imgStr;
      //改用param传参数,因为签名就一个数据没必要放在table里面
      string imgStr = (string)Report.GetParameterValue("signPath");
      Picture1.ImageLocation=imgStr;

上面的两种方式都经过测试,在网上找了很多方法大部分都是delphi的,关于c#的很少,主要用的是字节数组传递的方式。

另外在图片中设置数据列的方式也不行,已经设置为字节数组的类型了,而且传递过来的时候是没有经过base64转的
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值