Seite 3 von 3

Re: Screen mit scrollen manipulieren, wie geht das oder mit

Verfasst: 19.05.2013 14:29
von funkheld
Hallo, grüss dich.
Ich habe Zeit , es treibt mich keiner.
Bleibe doch schön Ruhig....genieße den Tag .

Frohe Pfingsten Josh , wünsche ich dir...ehrlich.

Gruss
peter

Re: Screen mit scrollen manipulieren, wie geht das oder mit

Verfasst: 19.05.2013 16:19
von captain_hesse
Hallo
Ich schlage vor das mit dem DrawingBuffer und CopyMemory vorerst mal wieder zu vergessen und einen anderen Lösungsweg zu suchen. Anstatt einen Text auf einen übergroßen Screen zu schreiben und den (Screen) dann zu verschieben solltest du lieber die Position der Objekte auf dem Screen neu berechnen und diese dann an der gewünschten Position neu zeichnen.

Hier mal ein Beispiel wie ich das meine.

Code: Alles auswählen

InitSprite()
  OpenWindow(0, 0, 0, 320, 200, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  OpenWindowedScreen(WindowID(0), 0, 0, 320, 200)
 
    h=16
    Dim text.s(100)
    For i=1 To 100
    text(i)=Str(i)
    Next
  
    s=1  
    e=10
    z=0
    Repeat
      ClearScreen(RGB(0, 0, 0))
      
      h1=0
      For i=s+z To e+z
        h1+h
        If i>100 : Break 2 : EndIf
        StartDrawing(ScreenOutput())
        
        DrawText(0, h1, text(i) )
        
        StopDrawing()
      Next     
      FlipBuffers() 
      z+1
      Delay(200)
      
    Until event=#PB_Event_CloseWindow
    
    
    Delay(1000)

Edit:

So ich habe mir dein Programm mal angeschaut, du hast in Procedure zwei() die Pufferlänge falsch berechnet du mußt natürlich die 16384 ( Bildpunkte ) auch mal 4 Byte rechnen, und dann hast du außerdem zwei Pointervariablen verwendet der du keine Adresse zuordnest. Ich habe Procedure zwei() mal etwas abgeändert

Code: Alles auswählen

Procedure zwei()
  buffer=buffer1
  CopyMemory(buffer1,buffer+16384*4,16384*4)
EndProcedure  
so funktioniert es.
Du solltest aber auf jeden fall immer Pointervariablen statt Variablen vom Typ long für Adressen verwenden.
Gruß Armin