Zentrieren von mehrzeiligen Text in einer Box
Verfasst: 16.02.2008 18:19
Mit dieser procedure können Texte 1-x zeilen, in einer Box zentriert werden.
Bitte kein Gelächter, bin immer noch Anfänger. Ich ich hab mich mal durchgerungen etwas hier reinzuschreiben.
Bitte kein Gelächter, bin immer noch Anfänger. Ich ich hab mich mal durchgerungen etwas hier reinzuschreiben.
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen(800, 600, 32, "")
Procedure C_V_Text_Box(boxX.l, boxY.l, boxW.l, boxH.l, Abstand.l, text.s, r.l, g.l, b.l)
; *************************************************************************************
; * Funktion: C_V_Text_Box(boxX, boxY, boxW, boxH, Abstand, text, r, g, b)
; *************************************************************************************
; * Beschreibung: Zentriert einen mehrzeiligen Text innerhalb einer Box
; *************************************************************************************
; * Parameters:
; * Abstand - Abstand zwischen den TextZeilen
; * boxX/boxY - Start Position der Box
; * boxW/boxH - Breite und Höhe der Box
; * text - Text -> mit | werden die Zeilen getrennt
; *
; *************************************************************************************
Protected cW.l, AP.l, Breite.l, Hoehe.l, i.l, gapy.l
DrawingMode(#PB_2DDrawing_Outlined)
Opt = 1 + CountString(text, "|")
Box(boxX , boxY, boxW, boxH, RGB(r, g, b))
For i = 1 To Opt
Breite = TextWidth(StringField(text, i, "|"))
Hoehe = TextHeight(StringField(text, i, "|"))
AP = (boxH-((Opt*Hoehe)+((Opt-1)*Abstand)))/2
cW = (boxW/2)-(Breite/2)
DrawingMode(#PB_2DDrawing_Transparent)
DrawText(boxX+cW,boxY+AP+gapy,StringField(text, i, "|"),RGB(r, g, b))
gapy = (i*(Hoehe+Abstand))
Next
EndProcedure
Repeat
ClearScreen(0)
ExamineKeyboard()
StartDrawing(ScreenOutput())
C_V_Text_Box(250, 150, 300, 300, 10,"Test|für|Forum|geschrieben|am|16.02.2008",255,255,255)
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)