提问人:CedL 提问时间:10/11/2023 最后编辑:CedL 更新时间:10/17/2023 访问量:33
RDLC 比例图像对齐
RDLC Proportional Image Alignment
问:
在 RDLC 文件中,有没有办法将图像与 Tablix 单元格高度的中心对齐?不知何故,它只能有一个固定的位置。我能找到的唯一解决方案是填充,但我似乎找不到在运行时获取单元格尺寸的方法。
我需要这样做的原因是,行上的其他单元格可能会更改行的高度,并且由于它主要只是文本框,因此图像看起来不对齐。
答:
1赞
CedL
10/17/2023
#1
我找到了某种解决方案。它需要知道将影响线高度的字段的值。您还需要一个等宽字体。所以基本上,我为图像的填充设置了一个表达式。从那里我调用一个报告函数:
Function GetLineAmount(ByVal str As String, ByVal lineLength As Integer) As Integer
Dim amount As Integer = 1
If str.Length > lineLength Then
Dim positionToFind As Integer = lineLength
If str(positionToFind) <> " " Then
' Find the last position of a space character
Do While positionToFind >= 0 AndAlso str(positionToFind) <> " "
positionToFind -= 1
Loop
' Find the last position before that which is not a space (group of spaces)
Do While positionToFind >= 0 AndAlso str(positionToFind) = " "
positionToFind -= 1
Loop
positionToFind += 1
End If
If positionToFind = 0 Then
positionToFind = lineLength
End If
Dim rest As String = str.Substring(positionToFind)
'PDF somehow "deletes" the first space in a line of text, so 2 space will leave one ... leaving this if to adapt to the pdf.
If rest.Length > 0 AndAlso rest(0) = " " Then
rest = rest.Substring(1)
End If
If rest <> String.Empty Then
amount += GetLineAmount(rest, lineLength)
End If
End If
Return amount
End Function
这将返回字段将采用的行数。您必须知道一行将采用的字符数(这就是为什么您需要等宽字体的原因)
然后从图像填充表达式中,代码将是:
= iif(Code.GetLineAmount(Fields!Description.Value,24) = 1
, "1pt"
, (4 + (6 * (Code.GetLineAmount(Fields!Description.Value,24) -2) )) & "pt"
)
因此,在该部分中,我发送了字段描述,该字段是某个时候需要更多行的字段,然后是 24 个,即可以适合这些行的 caracters 数量。
(这部分是解释if)根据我的测试,这些是顶部和底部填充的观察结果:
- 1 行需要 1pt 填充
- 需要 2 行 4 pt
- 3 和更多是 6 的增量。
评论
Fit proportion