【问题标题】:How to resize image if the image is bigger than Textbox.But it not increase scale if smaller如果图像大于文本框,如何调整图像大小。但如果更小,它不会增加比例
【发布时间】:2015-11-03 04:20:15
【问题描述】:

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

我需要在文本框中显示图像。 图像通过Chris Hays 的方法设置为中心对齐。 但是此方法必须将大小设置为“剪辑”

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

我尝试在“Fit Proportional”模式下使用尺寸。 Chris Hays的方法无法设置居中图片。

但如果我使用“适合尺寸”的尺寸。我可以忽略居中的图像。但是,如果某些图像非常小。它会失去质量。

如果需要怎么办

1.居中图片

2.适合文本框如果图像大于文本框。

3.Original size如果图片比文本框小。

【问题讨论】:

    标签: image reporting-services rdlc rdl


    【解决方案1】:

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

    第一个图像控件 - 将尺寸设置为“适合”

    第二个图像控制 - 设置大小为“Clip”并使用 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 是我的文本框的宽度。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我认为Image控件的Sizing属性不能用Expression设置。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-04
      • 2021-12-27
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      相关资源
      最近更新 更多