我使用Visual Studio报表设计器创建了RDLC报表布局。
我需要在文本框上显示图像。 通过Chris Hays方法将图像设置为居中对齐。 但是这种方法必须将大小设置为" Clip"
所以它有一个问题,因为它从数据库获取的Image比文本框大。它会像下面一样剪辑。
我尝试使用" Fit Proportional"模式。它无法通过Chris Hays方法设置居中图像。
但是,如果我使用"适合尺寸"的大小调整。我可以忽略居中的图像。但如果一些图像非常小。它将失去质量。
如果需要,我该怎么办
1.Centered image
2.如果图片大于文本框,则装到文本框。
3.原始尺寸如果图片小于文本框。
答案 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 与我的文本框相对应。
另一方面设置第二张图像的可见性。