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

时间:2011-02-11 08:37:23

标签: image rdlc

是否可以在RDLC System.Drawing.Image控件中使用Image? 我读过的只有3种方法:

  • 数据库
  • embeded resource
  • 外部文件

谢谢,谢谢。

编辑: 从这个.NET or C# library for CGM (Computer Graphics Metafile) format?开始,我现在得到System.Drawing.Image格式的图像,并希望将其显示为报告的一部分(作为图像) - 这就是我想要做的。

3 个答案:

答案 0 :(得分: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-engine知道给定的图像格式。 最后一个问题是,如何将system.drawing.image转换为字节数组。我与WPF合作,因此,我不知道。但我相信谷歌会非常可靠地回答这个问题。

答案 1 :(得分: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-使用'数据库'作为来源

How can I render a PNG image (as a memory stream) onto a .NET ReportViewer report surface

答案 2 :(得分:0)


我不太清楚你想用它做什么,但一般情况下这是不可能的。图像控制只是RDLC文件中的图像保持器。这3个选项指定图像控件拍摄图像的位置from-database,embeded资源或外部文件。如果你给我更多关于你想要达到的信息,我可以给你一些解决方案 最诚挚的问候,
约尔丹