Problem beim Übergeben einer Farbe zwischen 2 Formularen
-
Hallo,
ich bin neu hier und habe auch gleich eine Frage.
Ich entschuldige mich vorab für irgendwelche Fehler, ich muss mich erst etwas eingewöhnen.
Ich habe ein Pong-Spiel, bei dem ich die Spielfeldfarbe und die Rahmenfarbe jeweils an ein 2. Formular übergeben muss.
Einmal vom Spielfeld an ein Vorschauspielfeld und von diesem wieder ans Spielfeld.
Die Spielfeldfarbe funktioniert, aber die Rahmenfarbe ist etwas fummeliger.
Hier ein Auszug aus Form1, in der die Anweisungen zum Übergeben der Farbe stehen:private: System::Void spielfeldToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { Point neueGroesse; //EINSENDEAUFGABE 3 CPBS 14B Color SpielfeldFarbeHolen; //Neuer Wert zum Holen der Spielfeldfarbe //EINSENDEAUFGABE 3 CPBS 14B Color RahmenFarbeHolen; //Neuer Wert zum Holen der Rahmenfarbe einstellungenDialog ^neueWerte = gcnew einstellungenDialog(); //EINSENDEAUFGABE 3 CPBS 14B //Aufruf der erstellten Methode im einstellungenDialog (Spielfeldfarbe) neueWerte->SpielfeldFarbeUebernehmen(spielfeld->BackColor); //EINSENDEAUFGABE 3 CPBS 14B //Aufruf der erstellten Methode im einstellungenDialog (Rahmenfarbe) neueWerte->RahmenFarbeUebernehmen(); //wenn der Dialog über die "OK"-Schaltlfäche beendet wird if (neueWerte->ShowDialog() == ::DialogResult::OK) { //die neue Größe holen neueGroesse = neueWerte->liefereWert(); //EINSENDEAUFGABE 3 CPBS 14B //die neue Spielfeldfarbe holen und setzen SpielfeldFarbeHolen = neueWerte->SendeSpielfeldFarbe(); spielfeld->BackColor = SpielfeldFarbeHolen; //EINSENDEAUFGABE 3 CPBS 14B //die neue Rahmenfarbe holen und setzen RahmenFarbeHolen = neueWerte->SendeRahmenFarbe(); = RahmenFarbeHolen; //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(); } }
Und hier Form2 (einstellungenDialog):
public ref class einstellungenDialog : public System::Windows::Forms::Form { public: //EINSENDEAUFGABE 3 CPBS 14B //Methode zum Übergeben der Spielfeldfarbe vom Spielfeld an die Vorschau Color SpielfeldFarbeUebernehmen(Color farbe1) { panelSpielfeldVorschau->BackColor = farbe1; return farbe1; } //EINSENDEAUFGABE 3 CPBS 14B //Methode zum Übergeben der Rahmenfarbe vom Spielfeld an die Vorschau Color RahmenFarbeUebernehmen(Color farbe2) { panelRahmenVorschau->BackColor = farbe2; return farbe2; }
//EINSENDEAUFGABE 3 CPBS 14B //die Methode liefert die Spielfeldfarbe der Vorschau an das echte Spielfeld Color SendeSpielfeldFarbe() { return panelSpielfeldVorschau->BackColor; } //EINSENDEAUFGABE 3 CPBS 14B //die Methode liefert die Rahmenfarbe der Vorschau an das echte Spielfeld Color SendeRahmenFarbe() { return panelRahmenVorschau->BackColor; }
Ich weiß, das ich in dieser Methode
//zum Zeichnen des Spielfeldes Void zeichneSpielfeld() { //die weißen Begrenzungen pinsel->Color = Color::White; //ein Rechteck oben zeichenflaeche->FillRectangle(pinsel, 0, 0, spielfeldMaxX, spielfeldLinienbreite); //ein Rechteck rechts zeichenflaeche->FillRectangle(pinsel, spielfeldMaxX, 0, spielfeldLinienbreite, spielfeldMaxY + spielfeldLinienbreite); //und noch eins unten zeichenflaeche->FillRectangle(pinsel, 0, spielfeldMaxY, spielfeldMaxX, spielfeldLinienbreite); //damit es nicht langweilig wird, noch eine graue Linie in die Mitte pinsel->Color = Color::Gray; zeichenflaeche->FillRectangle(pinsel, spielfeldMaxX / 2, spielfeldMinY, spielfeldLinienbreite, spielfeldMaxY - spielfeldLinienbreite); }
etwas ändern muss bzw. ein neues Attribut anlegen muss.
Aber ich weiß nicht so recht, wie.
Ich weiß nicht, ob der Quelltext ausreicht, um mein Problem zu verstehen.
Hoffentlich kann mir jemand weiterhelfen.Danke und Gruß
Proggimaster
-
Ist hier niemand, der mir helfen kann?
So viele Zugriffe, aber keiner sagt etwas dazu?