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

Code: Alles auswählen

DrawText("String Zeile1" + Chr(10) + "String Zeile2")
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

Code: Alles auswählen

DrawText("String Zeile1" + Chr(10) + "String Zeile2")
funktionieren?
nein, wieso sollte es... ;)