Seite 1 von 1
Zeilenumbruch in DrawText()
Verfasst: 25.02.2007 20:37
von D4uS1
Ist es möglich in einem DrawText() Abschnitt eine neue Zeile anzufangen, damit man nicht ständig den Befehl erneut ausrufen muss um eine neue Zeile zu schreiben?
Danke im Voraus
Verfasst: 25.02.2007 20:42
von Fluid Byte
Nein.
Verfasst: 28.02.2007 17:18
von Scarabol
Hallo,
hab mal ne Procedure dazu geschrieben:
Code: Alles auswählen
; Diese Procedure ermöglicht es einen Text über mehere Zeilen zu schreiben und erlaubt sogar die Verwendung von chr(10)
Procedure DrawMultiLineText(x, y, width, height, Text$, Color)
; ©2007 by Scarabol
If width > 0 And height > 0 And height > TextHeight(Text$)
; PosX und PosY speichern die StartPosition
PosX = x
PosY = y
; teilt den Text in Wörter anhand der Leerzeichen
For i = 1 To CountString(Text$, #Space)+1
; Wort für Wort zum Text hinzufügen
SFT$ = StringField(Text$, i, #Space)
; Prüfen ob das Wort schon über die angegebene Weite hinausragt
If PosX+TextWidth(SFT$) > x+width
; wenn ja in neue Zeile springen
PosX = x
PosY+TextHeight(SFT$)
EndIf
; Prüfen ob ein Zeilenumbruch im aktuellen Wort gefunden wurde
If FindString(SFT$, Chr(10), 0)
; Wort bis zum Umbruch schreiben
DrawText(PosX, PosY, StringField(SFT$, 1, Chr(10)), Color)
; in neue Zeile springen
PosX = x
PosY+TextHeight(SFT$)
; Wort nach dem Umbruch auswählen
SFT$ = StringField(SFT$, 2, Chr(10))
EndIf
; nach den eventuellen Zeilensprüngen prüfen ob nicht schon die Höhe erreicht ist
; wenn ja die Höhe als Ergebnis zurückgeben
If PosY > y+height : ProcedureReturn PosY : EndIf
PosX = DrawText(PosX, PosY, SFT$+#Space, Color)
Next
ProcedureReturn PosY
Else
ProcedureReturn 0
EndIf
EndProcedure
Gruß
Scarabol
Verfasst: 28.02.2007 18:54
von Fluid Byte
Einer deine Stelle würd' ich DrawText_() benutzten.
Verfasst: 09.03.2007 23:58
von 50-Pfennig
Müsste es nich einfach mit
funktionieren?
Verfasst: 10.03.2007 01:06
von mk-soft
Verfasst: 10.03.2007 15:07
von Kaeru Gaman
50-Pfennig hat geschrieben:Müsste es nich einfach mit
funktionieren?
nein, wieso sollte es...
