如果图像大于文本框,如何调整图像大小。但是如果较小则不增加比例

时间:2015-11-03 04:20:15

标签: image reporting-services rdlc rdl

我使用Visual Studio报表设计器创建了RDLC报表布局。

我需要在文本框上显示图像。 通过Chris Hays方法将图像设置为居中对齐。 但是这种方法必须将大小设置为" Clip"

enter image description here

所以它有一个问题,因为它从数据库获取的Image比文本框大。它会像下面一样剪辑。

enter image description here

我尝试使用" Fit Proportional"模式。它无法通过Chris Hays方法设置居中图像。

但是,如果我使用"适合尺寸"的大小调整。我可以忽略居中的图像。但如果一些图像非常小。它将失去质量。

如果需要,我该怎么办

1.Centered image

2.如果图片大于文本框,则装到文本框

3.原始尺寸如果图片小于文本框。

2 个答案:

答案 0 :(得分:1)

如果您使用相同大小的教程,可以尝试使用以下表达式设置Sizing属性:

=IIF(Round((3.5-System.Drawing.Image.FromStream(new System.IO.MemoryStream(CType(Fields!LargePhoto.Value,Byte()))).Width
/96)/2,2)>0, "Clip", "Fit")

答案 1 :(得分:1)

我可以通过创建两个图像控件来解决这个问题。

第一个图像控制 - 设置尺寸“适合”

第二个图像控制 - 设置了“剪辑”大小并使用了Chris Hays的方法来居中显示图像。

两个图像控件都是通过表达式

设置的Visibility属性

如果图像宽度大于文本框,则第一个图像控件将显示,第二个将隐藏。

如果图像宽度小于文本框,则第一个图像控件将隐藏,第二个将显示。

我可以通过此代码获得图像宽度

       =(System.Drawing.Image.FromStream(new System.IO.MemoryStream(CType(First(Fields!FILE_BINARY_DATA.Value, "My Table"),Byte()))).Width /96)

96 是dpi

从上面的表达式中知道图像宽度后。 我将使用它来设置第一个图像的可见性属性,如这些

     =iif((imgWidthInch.Value  > 2.6  ),false,true)

2.6 与我的文本框相对应。

另一方面设置第二张图像的可见性。