如果图像大于 Textbox.But 如何调整图像大小如果更小则不会增加比例

How to resize image if the image is bigger than Textbox.But it not increase scale if smaller

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

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

所以它有一个问题,因为当它从数据库中获取的图像大于文本框时。它会像下面这样剪裁。

我尝试使用 "Fit Proportional" 模式调整大小。 Chris Hays 的方法无法设置居中图像。

但是如果我使用 "Fit to size" 调整大小。我可以忽略居中图像。但是如果一些图像很小。它会失去质量。

如果需要我该怎么办

1.Centered 图片

2.Fit 到文本框 如果图像大于文本框。

3.Original 大小 如果图像小于文本框。

如果您使用与本教程相同的尺寸,您可以尝试使用以下表达式设置 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")

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

第一个图片控件-已设置大小"Fit"

第二个图像控件 - 它设置了大小 "Clip" 并使用了 Chris Hays 的居中图像方法。

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

设置了可见性 属性

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

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

我可以通过这段代码得到图像的宽度

       =(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 是我的文本框的宽度。

另一只手设置第二张图片的可见性。