包裹文本的词没有分裂词

时间:2011-12-23 10:07:24

标签: parsing text vb6 word-wrap

我正在寻找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行,不分词? 提前致谢

2 个答案:

答案 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