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 all1 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
Leave a comment
You must be logged in to comment.
#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.