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
Zeilenumbruch in DrawText()
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Hallo,
hab mal ne Procedure dazu geschrieben:
Gruß
Scarabol
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
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea
PB-V: 4
WinXP
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
- 50-Pfennig
- Beiträge: 75
- Registriert: 22.01.2007 22:24
- Wohnort: 40764 Langenfeld
- Kontaktdaten:
Müsste es nich einfach mit funktionieren?
Code: Alles auswählen
DrawText("String Zeile1" + Chr(10) + "String Zeile2")
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
nein, wieso sollte es...50-Pfennig hat geschrieben:Müsste es nich einfach mitfunktionieren?Code: Alles auswählen
DrawText("String Zeile1" + Chr(10) + "String Zeile2")

Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.