Login Register
Frontpage Code library Pastebin

RowText

Author: MetalRain
Added: 9. huhtikuuta 2011 kello 23.40
Edited: 15. huhtikuuta 2011 kello 22.19
Category: Merkkijonot

Description

Tekstiä rivittävä funktio, tällä estetään liian pitkät tekstit tulostumasta yhdelle riville.

Code

Select all
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
Function RowText(st$,x,y,x2,center=0)
    If x + TextWidth(st$) < x2 Then
        If center = ON Then Text (x+x2)/2-TextWidth(st$)/2,y,st$ Else Text x,y,st$
    Else
        For i = 1 To CountWords(st$)
            word$ = GetWord(st$,i)
            If x + TextWidth(sentence$) + TextWidth(word$) > x2 Then
                If center = ON Then
                    Text (x + x2)/2 - TextWidth(sentence$)/2, y, sentence$
                Else
                    Text x, y, sentence$
                EndIf
                sentence$ = ""
                y = y + TextHeight("I")
            EndIf
            sentence$ = sentence$ + word$ + " "
        Next i
        If sentence$ <> "" Then
            If center = ON Then Text (x+x2)/2-TextWidth(sentence$)/2,y,sentence$ Else Text x,y,sentence$
        EndIf
    EndIf
End Function

Comments

#35 Sent by: Jare, 21. heinäkuuta 2012 kello 22.23

Pitkillä teksteillä tuo funktio on aika hidas. Tässä on muutama vuosi sitten tekemäni nopeampi versio:

Function RowText2(txt$, x,y, x2, center=0)
w = x2-x
chars_per_row = w/TextWidth("M")
char_h = TextHeight("M")
pos_start=1
txt_len = Len(txt)
ln = 0
While pos_start <= txt_len
pos_end = Min(pos_start+chars_per_row-1, txt_len)
'pos_end must point To a spacebar character, so
'substrackt from it Until it does.
While Mid(txt, pos_end,1) <> " " And pos_end < txt_len
pos_end - 1
Wend

'Get current row, calculate its coordinates And Print it out
current_row$ = Mid(txt, pos_start, pos_end-pos_start+1)
If center Then ln_x = x + (w-TextWidth(current_row))/2 Else ln_x = x
ln_y = y + ln*char_h
Text ln_x,ln_y, current_row
ln + 1
pos_start = pos_start + (pos_end-pos_start+1)
Wend
End Function

MetalRain: Jos haluat, voit lisätä sen tuohon varsinaiseen koodikenttään, niin se näkyy tällä sivulla selvemmin.

Leave a comment

You must be logged in to comment.