Parsing 不拆分单词的换行文字

Parsing 不拆分单词的换行文字,parsing,text,vb6,word-wrap,Parsing,Text,Vb6,Word Wrap,我正在寻找一个在VB6中解析字符串(长度可变)而不拆分任何单词的过程。 我有许多字符串,我必须将它们中的每一个(循环)写入一个图像 一个示例字符串是:“在《下一级军事行动纲领》中,军事行动和军事行动干预了明确的进展(Ottobre 2010年)在达拉斯市的四分之一的visiva sono体育场:CI3b指挥中心和坎蒂尔运营中心;在西西里岛costa siciliana的Sullo sfondoèvisibile酒店 例如,我如何在不拆分单词的情况下将其写成3行? 提前感谢要对文本进行换行,您需要

我正在寻找一个在VB6中解析字符串(长度可变)而不拆分任何单词的过程。 我有许多字符串,我必须将它们中的每一个(循环)写入一个图像

一个示例字符串是:“在《下一级军事行动纲领》中,军事行动和军事行动干预了明确的进展(Ottobre 2010年)在达拉斯市的四分之一的visiva sono体育场:CI3b指挥中心和坎蒂尔运营中心;在西西里岛costa siciliana的Sullo sfondoèvisibile酒店

例如,我如何在不拆分单词的情况下将其写成3行?
提前感谢

要对文本进行换行,您需要将其拆分为每个空格上的单词,然后依次计算从开头到每个空格所需的空间。当它超出该区域以适应时,您将所有内容打印到可渗透空间,然后在新行上重新开始

由于文本大小由使用的字体决定,因此需要查询图形库以查看每个块的大小。如果使用GDI,则可以使用
GetTextExtentPoint32()
函数。如果在创建JPEG之前绘制到VB6 picturebox,则可以使用
.TextWidth()
方法

还要注意,GDI
DrawText()
函数有一个选项,可以在给定Rect时自动断开单词


您需要提供有关如何绘制和创建图像的更多信息,以获得更具体的答案。

要对文本进行换行,您需要将文本拆分为每个空格上的单词,然后依次计算从开始到每个空格所需的空间。当它超出该区域以适应时,您将所有内容打印到可渗透空间,然后在新行上重新开始

由于文本大小由使用的字体决定,因此需要查询图形库以查看每个块的大小。如果使用GDI,则可以使用
GetTextExtentPoint32()
函数。如果在创建JPEG之前绘制到VB6 picturebox,则可以使用
.TextWidth()
方法

还要注意,GDI
DrawText()
函数有一个选项,可以在给定Rect时自动断开单词


您需要提供有关如何绘制和创建图像的更多信息,以获得更具体的答案。

这里有一个应该可以使用的函数

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
Private Function FormatString(ByVal StringToFormat作为字符串,ByVal MaxLineLen作为整数)作为字符串
将字符串设置为字符串
变暗位置尽可能长
FormatString=“”
位置=1
而StringToFormat“”

如果Len(StringToFormat)这里有一个函数应该可以工作

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
Private Function FormatString(ByVal StringToFormat作为字符串,ByVal MaxLineLen作为整数)作为字符串
将字符串设置为字符串
变暗位置尽可能长
FormatString=“”
位置=1
而StringToFormat“”

如果Len(StringToFormat)只是为了澄清,您想将文本换行吗?当
多行
设置为true且
滚动条
未同时设置或水平时,VB6文本框默认会执行此操作。谢谢Deanna。我必须在其中写入字符串的文本框不是VB6文本框。我必须将它写在JPEG版面上的分隔空间中(我知道在版面中文本放置的x,y坐标)。好的,我已经更新了问题以适应。每行是否有最大字符数限制?只是为了澄清一下,您想对文本进行文字换行吗?当
多行
设置为true且
滚动条
未同时设置或水平时,VB6文本框默认会执行此操作。谢谢Deanna。我必须在其中写入字符串的文本框不是VB6文本框。我必须将它写在JPEG版面上的分隔空间中(我知道将文本放在版面中的x,y坐标)。好的,我已经更新了问题以适应。是否每行有最大字符数限制?谢谢Deanna,很遗憾,现在我没有更多的时间来测试您的解决方案。接下来几天我会试试。谢谢Deanna,不幸的是现在我没有更多的时间来测试你的解决方案。我将在接下来的几天里试试。