Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Codegewitter

Frischling

  • »Codegewitter« ist der Autor dieses Themas

Beiträge: 6

Wohnort: Österreich

Beruf: Schüler

  • Private Nachricht senden

1

10.01.2012, 12:20

Scrolling Background C# Windows Forms

Hallo,

Die Überschrift sagt eigentlich alles, ich hätte gerne einen schwarzen Hintergrund mit weißen Punkten(Sternen) in einer PictureBox, die von rechts nach links wandern sollen. Wie kann ich das realisieren? Im Screenshot sieht man wie ich mir das vorstelle, nur hab ich keine Ahnung wie ich sie wandern lassen könnte.
Hoffentlich kann mir einer helfen bzw. versteht überhaupt mein Problem. Bin für jede Lösung offen.

MfG Chris

Screenshot:

(Link)

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

2

10.01.2012, 13:10

Was hast du denn bereits versucht?

Zendee

unregistriert

3

10.01.2012, 13:24

Ich habe ja nicht so viel Ahnung von Windows C#, aber hast du schon eine GIF-Animation als Hintergrund versucht?

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

4

10.01.2012, 15:40

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. ;)

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Spiele Programmierer« (10.01.2012, 22:09)


Codegewitter

Frischling

  • »Codegewitter« ist der Autor dieses Themas

Beiträge: 6

Wohnort: Österreich

Beruf: Schüler

  • Private Nachricht senden

5

10.01.2012, 20:38

erstmal danke für die schnellen antworten

@DerMark
hab probiert die PictureBox in Spalten einzuteilen und wollte die Sterne einer Spalte in die nächste weiterwandern usw.

@Zendee
Die Sterne werden zufällig erzeugt, den Faktor würd ich gern beibehalten, sonst wirds mir zu monoton.
Sonst aber gute Idee

@Spiele Programmierer
gute Idee, mal probieren

MfG Chris

Werbeanzeige