Transparenz bei Bildern / Zur Laufzeit Bilder zusammenfügen
-
Hi,
Wir versuchen das Gesellschaftsspiel "Die Siedler von Caten" in C++ zu programmieren. Und haben Probleme mit der Transperenz bei Bildern (bzgl. des Spielfelds):
Bei 2 PictureBoxen, beide mit (zu Testzwecken dem selben) .GIF Bild "befüllt", erscheint es unmöglich beim "Übereinanderschieben" Transparenz zu erreichen. Wir sind uns sicher das GIF Bild richtig (hinsichtlich der Transparenzeinstellung) gespeichert zu haben. Die Weiteren Darstellungseinstellungen der jeweiligen Picturebox sind:
BackColor: Transparent (Reiter WEB)
BackgroundImage: (Keine)
Image: Pfad / Bild im Explorer ausgewähltDie Transparenz der Ecken ist zwingend notwendig, die einzige (aber prinzipiel nicht hinnehmbare) Lösung des Problems bisher ist eine Verwendung eines Hintergrundbildes für die gesamte Form, das keine Transparenz hat (jpeg Format bspw.). Darauf liegen dann PictureBoxen, die transparent sind. Das Problem an dieser "Lösung" ist, dass dann das gesammte Spielfeld als Hintergrund dienen muss und deswegen extrem (!) statisch ist...
Ein anderer von uns überlegter Lösungsweg wäre eine zur Laufzeit erstellte Grafik des gesamten Spielfeldes als Hintergrundbild des Frames, da es dann möglich wäre die Straßen und Häuser (Städte) mit Transparenz in PictureBoxen darüberliegend einzufügen. Diesbezüglich fehlt uns ein Ansatz, wie aus mehreren Bildern (allen 5 Rohstoffen) variable, zur Laufzeit, ein zusammenhängendes Bild entstehen kann / erstellt werden kann.
Gruß Die Siedler aus Catan :o
-
versucht das ganze mal ohne die pictureboxen.
also über die paint_methode
-> drawimagedamit kannste die bilder direkt auf die oberfläche zeichnen.
-
Moin.
Vielleicht solltet ihr auch eure Erwartungen zurückschrauben und mit einem simplen Programm wie Hangman anfangen.
-
Haben es hinbekommen:
System::Void Form1_Load( Object^ sender, System::EventArgs^ e ) { this->pictureBox1 = gcnew PictureBox; // Dock the PictureBox to the form this->pictureBox1->Dock = DockStyle::Fill; // Connect the Paint event of the PictureBox to the event handler method. pictureBox1->Paint += gcnew System::Windows::Forms::PaintEventHandler( this, &Form1::pictureBox1_Paint); // Add the PictureBox control to the Form. this->Controls->Add( pictureBox1 ); } System::Void pictureBox1_Paint( Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { // Create a local version of the graphics object for the PictureBox. Graphics^ g = e->Graphics; System::Drawing::Image^ newImage = System::Drawing::Image::FromFile( "bilder/spielfeld_rohling.gif" ); Point ulCorner = Point(200,200); g->System::Drawing::Graphics::DrawImage( newImage, ulCorner ); Point ulCorner2 = Point(288,200); newImage = System::Drawing::Image::FromFile( "bilder/spielfeld_rohling.gif" ); g->System::Drawing::Graphics::DrawImage( newImage, ulCorner2 ); Point ulCorner3 = Point(244,275); newImage = System::Drawing::Image::FromFile( "bilder/spielfeld_rohling.gif" ); g->System::Drawing::Graphics::DrawImage( newImage, ulCorner3 ); }
-
freut mich das ich helfen konnte
sobald es ne test version gibts, immer hier damit
-
MessageBox::Show("gerne ;)");