Autor Beitrag
bklaus1978
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 02.01.12 08:21 
Hallo Forum,

ich würde gerne nach Zufall verschiedene Bilder hintereinander ablaufen lassen. Ich lege in einem Array fest, welche Bilder kommen sollen und nach dem Start sollen die Bilder nacheinander in der Form von oben nach unten laufen. Wie im Casino bei den Spielautomaten (HotFruit oder ähnliches) wie kann ich das einfach lösen?

Moderiert von user profile iconTh69: Beitragsformatierung überarbeitet.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 02.01.12 12:08 
Hallo,

nimm dazu die Timer-Komponente, stelle die Interval-Eigenschaft auf den gewünschten Wert (in ms) und im Tick-Ereignis führst du die Wechsel der Bilder aus.
Für die Bilder nimm drei PictureBoxen (oben, mitte, unten) und merke dir in einer Membervariablen den aktuellen Index (deines Bilder-Arrays) und zeige diese dann entsprechend an (idx, idx+1, idx+2).
Um das Array am Ende wieder auf den Anfang springen zu lassen, benötigst du den Modulo (%)-Operator.

P.S. Ich bin jetzt mal davon ausgegangen, daß du ein WinForms-Projekt hast (oder doch WPF?).
bklaus1978 Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 02.01.12 13:11 
Hallo,

Ja es ist eine WindowsForm.

Diese Variante habe ich schon gemacht aber es sieht nicht gut aus, ich würde es gerne durchfließen lassen..

lg
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 02.01.12 14:51 
Ah, jetzt verstehe ich: SmoothScrolling ;-)

Dazu mußt du dann die PictureBoxen auch noch (vertikal) bewegen. Und du benötigst dann eine weitere PictureBox (also jetzt 4), da die oberste jetzt hereinscrollen muß.

Du hast jetzt in dem Tick-Event zwei Indizes:
- der erste zählt die Pixelposition entsprechend der PictureBox-Höhe (+ evtl. Abstand zwischen den PBs)
- sobald dieser den Max-Wert erreicht hat, setzt du ihn wieder auf den Ursprungswert (0) und erhöhst den Bilder-Index (also wechselst dann die Bilder aus)

Die Pixelposition mußt du dann natürlich auf alle 4 PictureBoxen-Positionen anwenden, damit sich alle 4 gleichmäßig bewegen.

Bedenke aber, daß der minimale Tick-Intervallwert bei ca. 14/15 (ms) liegt (Einschränkung von Windows), so daß du es mit WinForms nie ruckelfrei hinkriegst.
Außerdem solltest du DoubleBuffering evtl. einschalten, s.a. Flackernde Controls vermeiden / Schnelles, flackerfreies Zeichnen.

Evtl. sogar anstatt der PictureBoxen selber zeichnen: Tutorial: Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox)