【问题标题】:How to use System.Drawing.Image in RDLC Image Control?如何在 RDLC 图像控件中使用 System.Drawing.Image?
【发布时间】:2013-02-25 22:57:48
【问题描述】:

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

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

谢谢谢谢。

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

【问题讨论】:

    标签: image rdlc


    【解决方案1】:

    不确定这是否是您要查找的内容,但是如果您在代码中有图像并且想要在报告中显示它,请创建一个包装对象,该对象具有将图像作为字节数组返回的属性并给出然后将此包装类的实例与报告的有效图像作为 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,因此,我不知道。但我相信google会非常可靠地回答这个问题。

    【讨论】:

    • 这很有趣..我会先试一试,然后再回来。谢谢。
    • 感谢它的工作!只想补充一点,只要控件的 mime 类型设置正确,RDLC 图像控件似乎也接受 byte[] 数组作为值。这将是第四种方法。
    【解决方案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

    【讨论】:

    • 我按照你说的做了一切都没有效果。会发生什么?
    【解决方案3】:


    我不太确定你想用这个做什么,但一般来说这是不可能的。图像控件只是 RDLC 文件中的一个图像持有者。这 3 个选项指定图像控件从哪里获取要显示的图像的位置from- 数据库、嵌入资源或外部文件。如果你给我更多关于你想要实现什么的信息,我可以给你一些解决方案。
    最好的问候,
    约旦

    【讨论】:

    • 嗨,Lordan,我刚刚编辑了我的帖子。这很简单,只想使用图像作为图像!所以我可以动态生成要打印的图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2012-08-01
    • 2021-09-07
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多