是否可以在RDLC图像控件中使用System.Drawing.Image
?我所阅读的内容只有三种方法:
- 数据库
- 嵌入式资源
- 外部文件
谢谢你。
编辑:
在这个.NET或C#库用于CGM(计算机图形元文件)格式?的跟进中,我现在已经得到了System.Drawing.Image
格式的图像,并希望将其作为报告的一部分显示(作为图像)-这就是我想做的。
是否可以在RDLC图像控件中使用System.Drawing.Image
?我所阅读的内容只有三种方法:
谢谢你。
编辑:
在这个.NET或C#库用于CGM(计算机图形元文件)格式?的跟进中,我现在已经得到了System.Drawing.Image
格式的图像,并希望将其作为报告的一部分显示(作为图像)-这就是我想做的。
不确定这是否符合您的要求,但如果您在代码中有一个图像,并且希望在报告中显示它,请创建一个包装对象,该对象具有返回图像字节数组的属性,并使用有效图像的此包装类的实例作为 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,因此我不知道。但我相信谷歌会非常可靠地回答这个问题。
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-使用“数据库”作为数据源
我不太确定您想要做什么,但通常情况下是不可能的。Image Control只是RDLC文件中的图像容器。这3个选项指定了图像控件从哪里获取要显示的图像-数据库、嵌入式资源或外部文件。如果您能告诉我您想要实现什么,我可以给您一些解决方案。
最好的问候,
Iordan