C# - Transparente PNG-Bilder

sebbi1234

Grünschnabel
Hallo,
ich möchte ein kleines Spiel programmieren. Dazu muss auf ein kleines Raumschiff, dass ich als PNG-Datei vorliegen habe vor einem Weltallhintergrund fliegen. Ich hab die beiden Bilder in jeweils eine PictureBox gesetzt, doch die Ränder des PNG-Bildes, die transparent sind, werden als weiße Farbe dargestellt. Ich hab dann auch picturBox1.BackColor = Color.Transparent; gesetzt, doch es hatte keinen Effekt.

Kann mir jemand sagen, was ich falsch mache und ändern muss?

Danke, Gruß
Sebastian
 
Hi sebbi,

mal ganz abgesehen davon, dass Spiele mit Windows Forms keine Freude bereiten, ist dies ein klassischer Fall für GDI+. Wenn du im Forum nach diesem Begriff suchst, wirst du sofort verstehen, was ich meine! :google:

Gruß
PhoenixLoe
 
Hi,

danke für die Antwort!

Ich habe mich jetzt mit GDI+ beschäftigt und meine Problemstellung gelöst.

Jetzt wollte ich das ganze auch auf die Entwicklung bei Programmen für PDAs anwenden und bekam dann ein anderes Problem. Während ich bei Windows-Anwendungen mit der Methode Image.FromFile("") ein Bild in ein Image speichern kann, habe ich festgestellt, gibt es diese Methode für das .NET Compact Framework wohl nicht. Dort wird nur die Methode Image.FromHbitmap() bereitgestellt.

Da ich mit der Methode und der Erklärung auf der Microsoft-Seite nichts anfangen konnte, wollt ich hier noch fragen, was es damit auf sich hat. Kann ich damit auch ein Bild in ein Image laden? Wenn ja, wie?

Gruß
Sebastian
 
Hi sebbi,

ich kenne mich zwar nicht mit dem Compact Framework aus, allerdings sollte es laut der Microsoft-Referenz folgendermaßen funktionieren:

Code:
Image img = (Image)(new Bitmap("Dateiname"));

Gruß
PhoenixLoe
 
Hallo,
ich möchte ein kleines Spiel programmieren. Dazu muss auf ein kleines Raumschiff, dass ich als PNG-Datei vorliegen habe vor einem Weltallhintergrund fliegen. Ich hab die beiden Bilder in jeweils eine PictureBox gesetzt, doch die Ränder des PNG-Bildes, die transparent sind, werden als weiße Farbe dargestellt. Ich hab dann auch picturBox1.BackColor = Color.Transparent; gesetzt, doch es hatte keinen Effekt.

Kann mir jemand sagen, was ich falsch mache und ändern muss?

Danke, Gruß
Sebastian

könntest du mal kurz sagen wie du das gelöst hast? vielen Dank!
 
Na ja, also ich habe das PNG trivialerweise einfach über das Paint-Ereignis und das Grafikobjekt der Form direkt gezeichnet. Dabei werden dann die transparenten Eigenschaften übernommen.
 
wenn du jetzt noch einen Beispielcode hast bin ich glücklich;)

Ein nicht funktionierender versuch:

Bitmap unlock_gif = new Bitmap(global::Shutdown.Properties.Resources.scheibe1);
Graphics g = pictureBox1.CreateGraphics();
g.DrawImage(unlock_gif, 1, 1);
 
Zuletzt bearbeitet:
Du solltest es besser vermeiden die PictureBox zu verwenden. Deshalb sagte ich auch, dass du es am Besten auf das Grafikobjekt der Form zeichnest, also in der
Methode des Paint-Ereignisses, etwas so wie:

Graphics g = e.Graphics; //wobei e das PaintEvent ist

g.DrawImage(..
 

Neue Beiträge

Zurück