如何在MS Reporting Services报表中动态居中图像?

时间:2020-03-05 18:38:28  来源:igfitidea点击:

当在设计时未知尺寸时,在MS Reporting Services中,开箱即用的图像元素不允许图像本身居中。换句话说,图像(如果小于设计图面上分配的尺寸)将锚定在左上角,而不是在中心。

我的报告将在运行时知道图像的URL,如果该图像小于设计器中指定的尺寸,则需要使该图像居中。

解决方案

回答

这就是我能够完成此操作的方式。在克里斯·海斯(Chris Hays)的帮助下

将图像的大小设置为与报表上所需的大小相同,然后将"大小调整"属性更改为"剪辑"。

使用表达式动态设置图像的左填充:

=CStr(Round((4.625-System.Drawing.Image.FromStream(System.Net.WebRequest.Create(Parameters!LogoURL.Value).GetResponse().GetResponseStream()).Width/96)/2,2)) & "in"

使用表达式动态设置图像的顶部填充:

=CStr(Round((1.125-System.Drawing.Image.FromStream(System.Net.WebRequest.Create(Parameters!LogoURL.Value).GetResponse().GetResponseStream()).Height/96)/2,2)) & "in"

克里斯的代码的第一个修改是交换报告中我图像元素的尺寸(我的图像为4.625x1.125,请参见上面的数字)。

我还选择从URL而不是数据库获取流。我使用了WebRequest.Create.GetResponse.GetResponseStream来做到这一点。

到目前为止,我希望能有所帮助!