Laufschrift zentriert

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Dirk Knoop

Betreff: Laufschrift zentriert

BeitragDo, Apr 23, 2009 18:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

hier ein Code.
Wie mache ich es, dass nur Text im blauen Bereich angezeigt wird ?

Code: [AUSKLAPPEN]

Graphics 800,600,0,2

SetBuffer BackBuffer()
Global timer=CreateTimer(60) ;timer


scrolltext$="Hallo, dieses hier ist nur ein Test, es soll nur soviel Text angezeigt werden, wie in dem blauen Kasten reinpasst. Links und rechts neben der blauen Box soll kein schwarzes gefülltes Rechteck gezeichnet werden."


scrollx=300

While KeyHit(1)=0
       Cls
   
      Color 0,0,255
      Rect 100,150,500,20,1
      
   
      Color 255,255,255
      Text scrollx,155,scrolltext$
      
      Text 10,10,scrollx

      ;diese Befehle sollen nicht benutzt werden!
      ;Color 0,0,0
      ;Rect 0,150,100,20,1
      ;Rect 600,150,200,20,1

      WaitTimer timer
      Flip 0
      
      scrollx=scrollx-1
       If scrollx<-1200 Then scrollx=1000
Wend
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist
www.torchance.de - ein etwas anderer Fußball-Manager

Eingeproggt

BeitragDo, Apr 23, 2009 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne lang herumzurechnen mit Stringwidth würde ich ViewPort empfehlen.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Dirk Knoop

BeitragDo, Apr 23, 2009 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für den Tipp, der hat mit sehr gut weitergeholfen und ich habe wieder was dazugelernt Wink

Den Befehl kannte ich noch gar nicht...

Dirk
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist
www.torchance.de - ein etwas anderer Fußball-Manager

SpionAtom

BeitragDo, Apr 23, 2009 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Viewport ist natürlich zu bevorzugen, aber es geht auch ohne:

Code: [AUSKLAPPEN]
;wirklich nur den gescrollten sichtbaren Text schreiben

timer = CreateTimer(120) ;timer
Graphics 800,600,0,2
SetBuffer BackBuffer()

scrolltext$="Hallo, dieses hier ist nur ein Test, es soll nur soviel Text angezeigt werden, wie in dem blauen Kasten reinpasst. Links und rechts neben der blauen Box soll kein schwarzes gefülltes Rechteck gezeichnet werden."

   ;init
   scrollx = 100
   scrollw = 500
   lenText = Len(scrolltext$)   
   toleranz = StringWidth("_")
   cposstart = 0
   relpos = 0
   tt$ = scrolltext$

   Repeat   
      

      If relpos < StringWidth(Left$(tt$, 1)) Then
         relpos = relpos + 1
      Else
         cposstart = cposstart + 1
         If cposstart > lenText Then cposStart = 0
         relpos = 0
      End If

      tt$ = ""
      cpos = cposstart
      While StringWidth(tt$) < scrollw - 2 * toleranz And cpos < lenText
         cpos = cpos + 1
         tt$ = tt$ + Mid(scrolltext$, cpos, 1)
      Wend     
   
      Cls
      Color 0,0,255: Rect 100,150,500,20,1
      Color 255,255,255: Text scrollx - relpos + toleranz, 155, tt$

      Flip 0
      WaitTimer timer     
   
   Until KeyDown(1)
   End


Obwohl hier wirklich nur soviel Text geschrieben wird, wie angezeigt wird, sind die Berechnungen doch insgesamt höher, und das Programm ist langsamer als die Methode mit Viewport.
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group