Textblock mit Textwidth - Angabe

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

 

Hangman

Betreff: Textblock mit Textwidth - Angabe

BeitragMi, Jul 06, 2011 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,
ich habe mal eine schöne Funktion von Hakkai von BB in BMax übersetzt und sie leicht erweitert.
Die Funktion splittet einen String in mehrere Zeilen falls der Bereich(den man als Parameter übergeben kann) in dem er angezeigt werden soll nicht ausreicht.

Link zum Original: https://www.blitzforum.de/foru...hp?t=35797

Und hier die BMax-Version:

BlitzMax: [AUSKLAPPEN]
Function textblock:Int(givenX:Int, givenY:Int, givenString:String, givenBreite:Int, givenZeilenabstand:Byte=15) 'givenBreite in Pixel
Local fetch:Int = 0 'in Zeichen
Local zeile:Int = 0 'TextZeile
Local nStr:Int = 0 'neuer String

Repeat
'_____ Finde heraus wieweit du gehen darfst
fetch = Instr(givenString," ",1)

Repeat
If TextWidth(givenString) > givenBreite Then
nStr = TextWidth(Left(givenString,Instr(givenString," ",fetch+1)))
If (nStr > 0) And (nStr < givenBreite) Then 'wenn hier das letzte Wort stand, liefert nStr 0 zurück.
fetch = Instr(givenString," ",fetch+1) 'erhöhe einzulesende Zeichen
Else
Exit
EndIf
Else
fetch = givenString.Length
Exit
EndIf
Forever
'_____ Habe es herausgefunden

If fetch=0 And givenString.Length > 0 Then fetch = givenString.Length 'sollte es noch nicht eingelesene Zeichen geben ist es wohl das letzte Wort

If fetch <= 0 Then
Exit
Else
zeile = zeile+1
EndIf

DrawText(Left(givenString, fetch), givenX, givenY+(zeile*givenZeilenabstand)) 'es wird bis zum fetch ausgegeben was in givenString:String steht
givenString = Right(givenString,givenString.Length-fetch) 'givenString:String wird angepasst

If givenString.Length <= 0 Then Exit
Forever

Return zeile
End Function


Erweitert wurde folgendes:
Arrow Die zur Anzeige benötigten Zeilen returned die Funktion
Arrow Man kann den Zeilenabstand per Parameter übergeben

Ansonsten habe ich außer der Namensgebung der Variablen nichts mehr verändert, Lob gilt also eher Hakkai Wink
Ich habe Berthold gebrochen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group