Als erstes würde ich eine Liste vom Type "List<Stern>" (Sterne ist ein Struct für einen Stern) erstellen.
Im einfachsten Fall würd ich mir dann einen Timer schnappen und die Liste aktualisieren und dann zeichnen.
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public Random Rnd = new Random();
public flloat MaxSternenRadius = 5.0f; //Muss eventuell angepasst werden
public void Timer_Tick(object Sender, EventArgs E)
//Neuen Stern (Eine Schleife wäre hier eigentlich besser)
Stern NeuerStern = new Stern()
NeuerStern.Pos = new Pointf(float)(Rnd.NextDouble()), ((float)(PicturePanel.Width)) + MaxSternenRadius);
SterneListe.Add(NeuerStern);
//Schleife über alle Sterne
for(int i = SterneListe.Count - 1; i >= 0, i--)
{
SterneListe[i].Pos.X -= 2.0f; //Mögliche Eigenschaft verändern, um die Sterne weiter zu bewegen.
if (SterneListe[i].Pos.X < -MaxSternenRadius) //Wenn Stern links außerhalb der Anzeige, ih entfernen.
{
SterneListe.RemoveAt(i); //Stern entfernen
}
}
PicturePanel.Refresh(); //Anzeige aktualisieren
}
|
Im PaintEvent des Anzeigeelementes(hier "PicturePanel") muss jetzt die Anzeige neu gezeichnet werden.
Ist sicher nicht die Performanteste Möglichkeit, aber zumindest mal ein Ansatz.