Seite 1 von 2
Zeilenumbruch mit DrawText()
Verfasst: 10.09.2010 22:51
von Mok
Hallo.
Ist es irgendwie möglich im DrawText()-Befehl einen Zeilenumbruch einzufügen? Ich mache gerade einen Splash-Screen und will während der Ladezeit einen "Tipp des Tages" anzeigen (welche in einem Tips.s() Array gespeichert sind). Da 100% der Texte über die Splash-Breite gehen, müsste ich jedesmal für einen Zeilenabsatz ein neues DrawText() aufrufen.
Gruß, Mok.
Re: Zeilenumbruch mit DrawText()
Verfasst: 10.09.2010 23:02
von X360 Andy
Wenn CHR(10) nicht funktioniert ( weiß ich nicht mehr ob das geht bei DrawText() ) dann wirst du für jede Zeile DrawText() aufrufen müssen... ich glaube das es nur so geht.
Gruß Andreas
Re: Zeilenumbruch mit DrawText()
Verfasst: 10.09.2010 23:08
von c4s
Native funktioniert das (noch) nicht, aber im Grunde genommen sollte dir folgender Code dabei helfen:
http://www.purebasic.fr/english/viewtop ... 12&t=35090
Re: Zeilenumbruch mit DrawText()
Verfasst: 10.09.2010 23:17
von TomS
Code: Alles auswählen
Procedure DrawLBText(image, width, text.s)
line.s=""
y=5
x=5
StartDrawing(ImageOutput(0))
k = CountString(text," ")
For loop = 1 To k
If TextWidth(line + StringField(text,loop," "))<width
line = line + StringField(text,loop," ")+" "
Else
DrawText(x,y,line,$FFFFFF)
y+30
line=StringField(text,loop," ")+" "
EndIf
Next
StopDrawing()
EndProcedure
CreateImage(0,300,500)
DrawLBText(0, 200, "Ist es irgendwie möglich im DrawText()-Befehl einen Zeilenumbruch einzufügen? Ich mache gerade einen Splash-Screen und will während der Ladezeit einen 'Tipp des Tages' anzeigen (welche in einem Tips.s() Array gespeichert sind). Da 100% der Texte über die Splash-Breite gehen, müsste ich jedesmal für einen Zeilenabsatz ein neues DrawText() aufrufen.")
OpenWindow(0,0,0,300,500,"DrawText LineBreak",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ImageGadget(0,0,0,300,500,ImageID(0))
Repeat:Until WaitWindowEvent()=#PB_Event_CloseWindow
Das gleiche Spielchen kannst du mit #LFCR$, #LF$ und #CR$ machen, wenn du den Text selber formatieren möchtest.
Re: Zeilenumbruch mit DrawText()
Verfasst: 11.09.2010 08:24
von #NULL
Re: Zeilenumbruch mit DrawText()
Verfasst: 16.09.2010 23:38
von Häns
Hallo Tom,
danke fürs Teilen, ich konnte dein Code gut gebrauchen. Wenn man bei der Procedure nach der For-Schleife
[quote="TomS"]
Code: Alles auswählen
For loop = 1 To k
If TextWidth(line + StringField(text,loop," "))<width
line = line + StringField(text,loop," ")+" "
Else
DrawText(x,y,line,$FFFFFF)
y+30
line=StringField(text,loop," ")+" "
EndIf
Next
nur noch mit
Code: Alles auswählen
line = line + StringField(text,loop," ")+" "
DrawText(x,y,line,$FFFFFF)
ergänzt, ist alles perfekt!
Häns
Re: Zeilenumbruch mit DrawText()
Verfasst: 17.09.2010 09:07
von GPI
da ist ein gewaltiger Bug in Code:
wie kommst du darauf, das alle Schriften gleich groß sind? Richtig wäre, hier die textheigth()-Funktion zu nutzen.
Re: Zeilenumbruch mit DrawText()
Verfasst: 17.09.2010 16:38
von TomS
@GPI: Hast du eigentlich nen Besen gefressen?
Ich komme überhaupt nicht drauf. Ich hab nur keine Lust eine simple Frage mit 100% ästhetischem Code zu beantworten. Zumal Mok sich beim letzten mal nicht einmal bedankt oder mitgeteilt hat, dass es ihm geholfen hat...
Er wird wohl selber draufkommen, dass was nicht stimmt, wenn er mit seiner Schrift einen Zeilenabstand von 2.5 oder auch von 0.3 bekommt.
Hab's zwar nicht gestestet, aber afair gibt TextHeight die genaue Höhe aus. Das heißt du hast dann gar keinen Zeilenabstand.
Richtig wäre dann TextHeight()+n
Re: Zeilenumbruch mit DrawText()
Verfasst: 17.09.2010 16:41
von GPI
TomS hat geschrieben:@GPI: Hast du eigentlich nen Besen gefressen?
ne ein Clown. Mein Gott nicht immer alles auf die Goldwage legen.
Richtig wäre dann TextHeight()+n
Ich würde dann ein TextHeight()*150/100 (oder sowas, wäre dann die halbe Höhe als Zeilenabstand) einstellen

- ist flexibler an der Größe.
Re: Zeilenumbruch mit DrawText()
Verfasst: 17.09.2010 23:08
von Mok
TomS hat geschrieben:Zumal Mok sich beim letzten mal nicht einmal bedankt oder mitgeteilt hat, dass es ihm geholfen hat...
Sofort nachholen...! Danke vielmals, hast mir wieder mal aus der Patsche geholfen
