Seite 1 von 1

Zentrieren von mehrzeiligen Text in einer Box

Verfasst: 16.02.2008 18:19
von obar
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.

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)

Verfasst: 16.02.2008 20:10
von RSBasic
@obar
Es ist einfach, aber nützlich :allright: