Visual Basic: Wie kann ich einen Text als Laufband animieren.

Neo21

Grünschnabel
Vielleicht ist es schwer aus der Überschrift nachzuvollziehen was ich möchte. Nunja, ich bin noch ein Anfänger und habe nach ewigem Basteln keine Lösung erzielt.

Was ich will:

Ich habe einen doppelten Grafikpuffer in einer PictureBox erstellt. Nun möchte ich das einen unbestimmt langen String, der diesen durchläuft. Ich habe einen Thread erstellt um auf eine Sleep Variante zurückgreifen zu können.

Das habe ich bis jetzt:

Code:
        Dim TextBuffer As BufferedGraphics
        Dim Buffer As BufferedGraphicsContext
        Buffer = BufferedGraphicsManager.Current
        
        Dim Rec As Rectangle
        Rec.X = 70
        Rec.Y = 30
        Rec.Width = 380
        Rec.Height = 27

        TextBuffer = Buffer.Allocate(PictureBox1.CreateGraphics, Rec)

        Dim textpoint As New Point(70, 32)

        Dim Textstring As String = "Hallo - Dies ist ein Beispiel-String"

        Do
            If NewThread = True Then Exit Sub
            TextBuffer.Graphics.Clear(Color.White)
            TextBuffer.Graphics.DrawString(Textstring, New Font("Times New Roman", 13), Brushes.Black, textpoint)
            textpoint.X = textpoint.X - 1

            TextBuffer.Render()
            Thread.Sleep(10)

        Loop

Der Text läuft jetzt schön flüssig durch, allerdings weiß ich nicht wie ich den String kurz hinter dem schon fast durchlaufenen String neu zeichnen lasse.

Wichtig ist mir das der String in kleinen Schritten verschoben wird. Ich hatte die Möglichkeit schon mit einer String Bearbeitung gelöst, jedoch sah mir das zu grob aus.

Gibt es dafür vielleicht auch eine Klasse. (Sowas wie SlideObject)
Würde mich über Hilfe freuen.

PS: Mir ist noch aufgefallen, dass wenn ich mein Programm minimiere und dann wieder maximiere, meine Graphics entfernt wurden. Kann ich das verhindern?

Neo
 
Zuletzt bearbeitet:

Nico Graichen

Erfahrenes Mitglied
Hi
PS: Mir ist noch aufgefallen, dass wenn ich mein Programm minimiere und dann wieder maximiere, meine Graphics entfernt wurden. Kann ich das verhindern?
Bei deinem eigentlichen Problem kann ich dir nicht helfen, aber dabei:
Du musst das Zeichnen im OnPaint-Ereignis machen. Damit wird das Zeichnen jedesmal ausgeführt, wenn auch das Control gezeichnet wird.

Ggf solltest du die entsprechenden Informationen aber außerhalb des EventHandlers zwischenspeichern, da der String sonst jedes mal von vorn beginnt