报告查看器可能从表单传递图像?

使用visual Studio ultimate 2012。

我目前正在构建一个报告,以便在报告查看器中打印。 到目前为止,我有一堆文本框,通过参数从我的表单文本框中获取其值。

到目前为止一切正常。

然后我遇到了一个重大问题。 如何将图像从我的表单上的图像传递到报表上的图像? 数据库中存在1个图像我相信我可以作为参数调用图像(不确定)。 更大的问题是另一个形象。

另一个图像使用生成QR图像的外部API。 此图像在运行时显示在表单上的图片框中。 我没有将图像保存在我不想要的任何地方。 但我明白我是否需要。 有什么办法我可以将QR图像从我的表格上的图像框传递到我的报告图像框吗?

更新inheritance错误的代码:

Microsoft.Reporting.WinForms.ReportParameter rpIMG1 = new Microsoft.Reporting.WinForms.ReportParameter("paramQRimg", base64String); Microsoft.Reporting.WinForms.ReportParameter rpIMG2 = new Microsoft.Reporting.WinForms.ReportParameter("paramQRMi", "image/png"); reportViewer1.LocalReport.SetParameters(new Microsoft.Reporting.WinForms.ReportParameter[] { rp1, rp2, rp3, rp4, rp5, rp6, rp7, rp8, rp9, rp10, rpIMG1, rpIMG2 }); 

设置参数部分出错,它只是说:

 An error occurred during local report processing. 

不知道为什么它不喜欢这个

  public string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format) { using (MemoryStream ms = new MemoryStream()) { // Convert Image to byte[] image.Save(ms, format); byte[] imageBytes = ms.ToArray(); // Convert byte[] to Base64 String string base64String = Convert.ToBase64String(imageBytes); return base64String; } } 

将图像转换为base64字符串,然后将其作为参数传递给报表,然后将报表图像设置为此参数。

void header(){try {string name =“”; string address =“”; string phone =“”; string mobile =“”; string establish =“”;

  db.sql.Close(); db.sql.Open(); SqlCommand cmd = new SqlCommand("select * from print_head", db.sql); SqlDataReader read = cmd.ExecuteReader(); while (read.Read()) { name = read[1].ToString(); address = read[2].ToString(); phone = read[3].ToString(); mobile = read[4].ToString(); establish = read[5].ToString(); MemoryStream ms = new MemoryStream((byte[])read[6]); logo = Image.FromStream(ms); try { // Convert Image to byte[] byte[] imageBytes = ms.ToArray(); // Convert byte[] to Base64 String base64String = Convert.ToBase64String(imageBytes); } catch(Exception ex) { MessageBox.Show(ex.ToString()); } } ReportParameterCollection r = new ReportParameterCollection(); r.Add(new ReportParameter("name", name.ToString())); r.Add(new ReportParameter("address", address.ToString())); r.Add(new ReportParameter("phone", phone.ToString())); r.Add(new ReportParameter("mobile", mobile.ToString())); r.Add(new ReportParameter("establish", establish.ToString())); r.Add(new ReportParameter("logo", base64String.ToString())); this.reportViewer1.LocalReport.SetParameters(r); db.sql.Close(); } catch { } }