Hallo zusammen und einen schönen guten Abend,
Ich erstelle gerade zur Übung ein kleines Spiel (Pong). Das Programm läuft soweit. Ich möchte jetzt über ein Menü, was in einer anderen Form geladen wird, das Spielfeld anpassen.
Die Anpassung des Spielfeldes funktioniert auch.
Mein Problem:
Wenn ich das Spielfeld angepasst haben und ich erneut das Spielfeld ändern möchte dann soll die zuvor ausgewählte Option markiert werden.
Das bekomme ich Aktuell nicht hin.
Mein Ansatz:
Ich hatte mir gedacht ich hole mir durch eine Methode einfach die Aktuelle Breite und vergleiche diese.
Leider wird nach der Neuzeichnung des Formulares (Form1) die Aktuelle Breite nicht aktualisiert. Dieses Problem verstehe ich aktuell nicht.
Code und Problembeispiel
Im folgenden Code wird aus dem zweiten Formular (EinstellungenDialog) der ausgewählte Wert geholt und dann die Breite und die Höhe gesetzt und neu gezeichnet.
Spoiler anzeigen
Die Methode aus dem zweiten Formular sieht wie folgt aus
Spoiler anzeigen
Beim ersten Durchlauf funktioniert alles Problemlos und die Einstellung wird korrekt gesetzt.
Beim zweiten Durchlauf allerdings bleibt der Wert über unverändert obwohl das Formular eine andere größe hat.
1.Durchlauf OK
2. Durchlauf mit 1024x768 Pixel ohne Änderung der Breite. Auch Size.width hat keine Besserung ergeben
Vielleicht hat jemand eine Idee woran das liegen kann.
Ich erstelle gerade zur Übung ein kleines Spiel (Pong). Das Programm läuft soweit. Ich möchte jetzt über ein Menü, was in einer anderen Form geladen wird, das Spielfeld anpassen.
Die Anpassung des Spielfeldes funktioniert auch.
Mein Problem:
Wenn ich das Spielfeld angepasst haben und ich erneut das Spielfeld ändern möchte dann soll die zuvor ausgewählte Option markiert werden.
Das bekomme ich Aktuell nicht hin.
Mein Ansatz:
Ich hatte mir gedacht ich hole mir durch eine Methode einfach die Aktuelle Breite und vergleiche diese.
Leider wird nach der Neuzeichnung des Formulares (Form1) die Aktuelle Breite nicht aktualisiert. Dieses Problem verstehe ich aktuell nicht.
Code und Problembeispiel
Im folgenden Code wird aus dem zweiten Formular (EinstellungenDialog) der ausgewählte Wert geholt und dann die Breite und die Höhe gesetzt und neu gezeichnet.
C#-Quellcode
- private void spielfeldToolStripMenuItem_Click(object sender, EventArgs e)
- {
- Point neueGroesse = new Point(0, 0);
- EinstellungenDialog neueWerte = new EinstellungenDialog();
- //wenn der Dialog über die "OK"-Schaltfläche beendet wird
- if (neueWerte.ShowDialog() == DialogResult.OK)
- {
- //die neue Größe holen
- neueGroesse = neueWerte.LiefereWert();
- //den Dialog wieder schließen
- neueWerte.Close();
- //das Formular ändern
- this.Width = neueGroesse.X;
- this.Height = neueGroesse.Y;
- //neu ausrichten
- this.Left = (Screen.PrimaryScreen.Bounds.Width - this.Width) / 2;
- this.Top = (Screen.PrimaryScreen.Bounds.Height - this.Height) / 2;
- //die Zeichenfläche neu beschaffen
- zeichenflaeche = spielfeld.CreateGraphics();
- //das Spielfeld neu setzen
- SetzeSpielfeld();
- //Spielfeld löschen
- zeichenflaeche.Clear(spielfeld.BackColor);
- //und einen neuen Ball und einen neuen Schläger zeichnen
- NeuerBall();
- }
- }
Die Methode aus dem zweiten Formular sieht wie folgt aus
C#-Quellcode
- //die Methode liefert den ausgewählten Wert
- public Point LiefereWert()
- {
- Point rueckgabe = new Point(0, 0);
- if (radioButton320.Checked == true)
- rueckgabe = new Point(320, 200);
- if (radioButton640.Checked == true)
- rueckgabe = new Point(640, 480);
- if (radioButton1024.Checked == true)
- rueckgabe = new Point(1024, 768);
- if (radioButtonMaximal.Checked == true)
- rueckgabe = new Point(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
- return rueckgabe;
- }
Beim ersten Durchlauf funktioniert alles Problemlos und die Einstellung wird korrekt gesetzt.
Beim zweiten Durchlauf allerdings bleibt der Wert über unverändert obwohl das Formular eine andere größe hat.
1.Durchlauf OK
2. Durchlauf mit 1024x768 Pixel ohne Änderung der Breite. Auch Size.width hat keine Besserung ergeben
Vielleicht hat jemand eine Idee woran das liegen kann.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MajorOli“ ()