2011-12-23 1 views
1

Я ищу в процедурах в VB6 для разбора строк (с переменной длиной) без разделения ни слова. У меня есть много строк, и я должен написать каждый из них (счетчик циклов) к изображению.Перенос слов текста без разделения слов

Пример строка: «Точки зрения находится в Форте нижней Matiniti Работы и область вмешательства, предусмотренная в Заключительном проекта (октябрь 2010) и классифицируемая визуальной станцией является:. Центр и управления рабочий сайт CI3b;. две опорных башен и кабели между Torre и бетонными блоками на фоне виден сицилийский берег «

Как я пишу это, например, в 3-х линий, без разделения слов. ? Заранее спасибо

+1

Просто чтобы прояснить, вы хотите, чтобы слово обернуть текст? VB6 Textbox делает это по умолчанию Когда MultiLine' является '' ScrollBars' Установите истинны и не установлен в обоих или по горизонтали. – Deanna

+0

Благодаря Дианна. Текстовое поле в Кюи Я писать строку это не является VB6 текстового поля. Я писать его в ограниченном пространстве на макете JPEG (я знаю, что х, у COORDS, где поместить текст в макете). – albus2011

+0

Хорошо, я обновил вопрос в соответствии. – Deanna

ответ

3

Чтобы сделать перенос слов текста, вы должны разбить его на слова на каждом пространстве, а затем рассчитать, сколько места потребуется от начала до каждого места в очереди. Когда она идет над областью, чтобы соответствовать, вы распечатать все до проницаемым пространства затем снова начать на новой линии.

Поскольку размер шрифта определяется используемым шрифтом, вам нужно будет запрашивать рисунок библиотеки, чтобы увидеть, насколько большим каждый кусок будет. При использовании GDI, вы можете использовать функцию GetTextExtentPoint32(). Если рисунок на VB6 PictureBox перед созданием JPEG, вы можете использовать метод .TextWidth().

также отмечает, что DrawText() функция GDI имеет возможность разбить на слова автоматически даны Rect.

Вам нужно, чтобы получить больше информации о том, как вы делаете рисунок и создание образа для более конкретного ответа.

+0

Спасибо Deanna, сейчас, к сожалению, я не больше времени на тестовый раствор. Постараюсь в ближайшие дни. – albus2011

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