我正在寻找VB6中的一个过程来解析字符串(具有可变长度)而不分割任何单词。 我有很多字符串,我必须将每个字符串(循环)写入图像。
示例字符串是:“ Il punto di vista si trova in corrispondenza del Forte Matiniti inferiore.Le opere e le aree di intervento previste dal Progetto Definitivo(Ottobre 2010)e inquadrabili dalla stazione visiva sono:il Centro Direzionale e il cantiere operativo CI3b; le due torri di sostegno ei cavi tra Torre e blocco di cemento.Sullosfondoèvisibilela costa siciliana。“
如何编写它,例如,3行,不分词? 提前致谢
答案 0 :(得分:3)
要对文字进行自动换行,您需要将其拆分为每个空格中的单词,然后依次计算从开头到每个空格所需的空间。当它超出该区域以适应时,您将所有内容打印到前一个空间,然后在新行上重新开始。
由于文本大小由使用的字体决定,您需要查询绘图库以查看每个块的大小。如果使用GDI,则可以使用GetTextExtentPoint32()
函数。如果在创建JPEG之前绘制到VB6图片框,则可以使用.TextWidth()
方法。
另请注意,GDI DrawText()
函数可以选择在给定Rect的情况下自动中断单词。
您需要提供有关如何进行绘图和创建图片的更多信息,以获得更具体的答案。
答案 1 :(得分:1)
这是一个应该起作用的功能
Private Function FormatString(ByVal StringToFormat As String, ByVal MaxLineLen As Integer) As String
Dim TempString As String
Dim Pos As Long
FormatString = ""
Pos = 1
While StringToFormat <> ""
If Len(StringToFormat) <= MaxLineLen Then
TempString = Trim(StringToFormat)
Else
TempString = Mid(StringToFormat, Pos, MaxLineLen + 1)
TempString = Trim(Left(TempString, InStrRev(TempString, " ")))
End If
FormatString = FormatString & TempString & vbCrLf
StringToFormat = LTrim(Right(StringToFormat, Len(StringToFormat) - Len(TempString)))
Wend
End Function