我正在尝试根据三个文本字符串的长度设置字体大小
限制因素是打印区域,它是Avery地址标签1“ X 2-5 / 8”
全局变量gv
表示要打印的三个数据字符串
由于这三个字符串的长度可能因数据而异,因此我测试该长度的代码试图比较3个元素以决定字体大小。如果一组太长,则决定字体大小
如果所有数据均为实数,则第一个测试有效
第二项测试有效,但不能使第三项测试起作用。发布的CODE将使这一点更加清晰。希望
由于尝试了多种设计,我不确定失败是否是我的测试代码构造
我已经看过这个概念,但是觉得对我的问题不可行
StringSize = e.Graphics.MeasureString(strS, myFont)
因为我正在处理3个高度可变的元素,所以我觉得我的测试代码不是可行的概念
如果有更好的解决方案可以帮助解决此问题,则需要提出建议
或者我的测试代码可以固定使用吗?
测试代码
Dim FL As Integer = gv_FN.Length + gv_LN.Length
If gv_AD.Length >= 24 Or FL >= 26 Or gv_CT.Length >= 16 Then
fontSIZE = 11
End If
If gv_AD.Length = 23 Or gv_AD.Length = 22 Or gv_AD.Length = 21 Or gv_AD.Length = 20 Or gv_AD.Length = 19 _
Or FL = 25 Or FL = 24 Or FL = 23 Or FL = 22 Or FL = 21 _
Or gv_CT.Length = 15 Or gv_CT.Length = 14 Or gv_CT.Length = 13 Or gv_CT.Length = 12 Then
fontSIZE = 13
End If
If gv_AD.Length <= 18 Or FL <= 20 Or gv_CT.Length <= 11 Then
fontSIZE = 15
End If
tbInfo.Text = fontSIZE.ToString
Dim labelFont As Font = New Font("Times New Roman", fontSIZE, FontStyle.Bold)
这是带有FIX的EDIT,正如@Hursey建议使用ElseIf
If gv_AD.Length >= 24 Or FL >= 26 Or gv_CT.Length >= 16 Then
fontSIZE = 11
ElseIf gv_AD.Length = 23 Or gv_AD.Length = 22 Or gv_AD.Length = 21 Or gv_AD.Length = 20 Or gv_AD.Length = 19 _
Or FL = 25 Or FL = 24 Or FL = 23 Or FL = 22 Or FL = 21 _
Or gv_CT.Length = 15 Or gv_CT.Length = 14 Or gv_CT.Length = 13 Or gv_CT.Length = 12 Then
fontSIZE = 13
Else
fontSIZE = 15
End If
tbInfo.Text = fontSIZE.ToString
Dim labelFont As Font = New Font("Times New Roman", fontSIZE, FontStyle.Bold) 'Times New Roman
答案 0 :(得分:1)
您可以将三个字符串元素总计,然后只需测试一个值
测试值将与您当前的测试值有很大不同
我汇总了一些抽象数字,因此您将需要自己的集合
Dim FL As Integer = gv_FN.Length + gv_LN.Length
Dim AD As Integer = gv_AD.Length
Dim CT As Integer = gv_CT.Length
Dim tot As Integer = FL + AD + CT
If tot >= 54 Then
fontSIZE = 12
End If
If tot = 53 Or tot = 52 Or tot = 51 Or tot = 50 Or tot = 49 Or tot = 48 _
Or tot = 47 Or tot = 46 Or tot = 45 Or tot = 44 Or tot = 43 Then
fontSIZE = 13
End If
If tot <= 42 Then
fontSIZE = 15
End If
答案 1 :(得分:1)
我希望标签的3行都具有相同的字体大小。获取最长的行,并进行测试以获取字体大小。
解析一次字符串长度;然后使用局部变量。使用.Max函数将返回最长的行。
Private gv_FN As String
Private gv_LN As String
Private gv_AD As String
Private gv_CT As String
Private Sub OP2Code()
Dim fontSIZE As Integer
Dim FirstLine As Integer = gv_FN.Length + gv_LN.Length
Dim SecondLine = gv_AD.Length
Dim ThirdLine = gv_CT.Length
Dim Longest = (New List(Of Integer)({FirstLine, SecondLine, ThirdLine})).Max
Select Case Longest
Case >= 26
fontSIZE = 11
Case >= 21
fontSIZE = 13
Case <= 20
fontSIZE = 15
End Select
tbInfo.Text = fontSIZE.ToString
Dim labelFont As Font = New Font("Times New Roman", fontSIZE, FontStyle.Bold)
End Sub