如何在RDLC图像控件中使用System.Drawing.Image?

6

是否可以在RDLC图像控件中使用System.Drawing.Image?我所阅读的内容只有三种方法:

  • 数据库
  • 嵌入式资源
  • 外部文件

谢谢你。

编辑: 在这个.NET或C#库用于CGM(计算机图形元文件)格式?的跟进中,我现在已经得到了System.Drawing.Image格式的图像,并希望将其作为报告的一部分显示(作为图像)-这就是我想做的。

3个回答

4

不确定这是否符合您的要求,但如果您在代码中有一个图像,并且希望在报告中显示它,请创建一个包装对象,该对象具有返回图像字节数组的属性,并使用有效图像的此包装类的实例作为 ReportDataSource 提供给报告。

类似于以下内容:

 ReportDataSource logoDataSource = new ReportDataSource();
 logoDataSource.Name = "LogoDS";
 logoDataSource.Value = new List<LogoWrapper>() { yourLogoWrapper };
 localReport.DataSources.Add(logoDS);

在报告中,您可以像从数据库中获取图像一样查看它。

 =First(Fields!LogoByteArrayProperty.Value, "LogoDS")

包装器看起来像这样:
 class LogoWrapper{
   ...
   public byte[] LogoByteArrayProperty{
      get{ 
         // Return here the image data
      }
   }
 }

我经常使用这个功能。它的优点是我不需要将图像添加到数据库或将其添加为每个报告的资源。此外,应用程序可以指定要使用哪个图像。 请注意,所给出的图像格式必须从rdlc引擎中知道。 最后一个问题是如何将system.drawing.image转换为字节数组。我使用WPF,因此我不知道。但我相信谷歌会非常可靠地回答这个问题。


这很有趣,我会先试试看,然后再回来。谢谢。 - Jake
谢谢,这个方法可行!只想补充一点,看起来 RDLC 图像控件也可以接受 byte[] 数组作为值,只要控件的 MIME 类型设置正确。这将是第四种方法。 - Jake

2
你可以使用“数据库”源选项以及参数来动态设置图像源自字节数组。
后台代码:
var param2 = new ReportParameter()
               {
                   Name = "CompanyLogo",
                   Values = { Convert.ToBase64String(*ByteArrayImageObject*) }
               };
                ReportViewer1.LocalReport.SetParameters(param2);

rdlc文件:

1- 添加文本参数'CompanyLogo'和'MIMEType'

2- 将图像的Value属性设置为=System.Convert.FromBase64String(Parameters!CompanyLogo.Value)

3- 设置MIME类型属性为

=Parameters!MIMEType.Value

4-使用“数据库”作为数据源

如何将PNG图像(作为内存流)呈现到.NET ReportViewer报告表面


我按照你说的做了一切,但没有效果。可能发生了什么? - Felix Aballi

0


我不太确定您想要做什么,但通常情况下是不可能的。Image Control只是RDLC文件中的图像容器。这3个选项指定了图像控件从哪里获取要显示的图像-数据库、嵌入式资源或外部文件。如果您能告诉我您想要实现什么,我可以给您一些解决方案。
最好的问候,
Iordan


嗨Lordan,我刚刚编辑了我的帖子。很简单,只是想使用图像作为图像!这样我就可以动态生成要打印的图像了。 - Jake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接