2016-03-24 13 views
1

Ich habe dieses Problem. Ich möchte, dass der Hintergrund des Frosches transparent ist, so dass das Protokoll darunter zu sehen ist, stattdessen wird die Farbe des Hintergrundbildes angezeigt.Transparente Bildbox über eine andere transparente Bildbox C#

problem

gegoogelt ich das Problem und bekam den Vorschlag, die Eltern des picturebox zu ändern, was ich versuchte, aber dies geschah:

it works, but only in the log's picturebox area

ich etwas falsch zu machen klar bin. Kann jemand helfen?

+0

Es wird gut funktionieren, wenn Sie streng darauf achten, nur Steuerelement __nesting__, nicht __overlapping__ zu verwenden. Dies muss in Code für Picture Boxes getan werden. Jedoch sind die Momente, in denen der Frosch halb und halb von einem Baumstamm ist, ein Problem. Vielleicht möchten Sie sich [this] ansehen (http://stackoverflow.com/questions/35107257/how-to-add-label-transparency-in-picturebox-c/35107623?s=6|0.0865#35107623) Lösung, die __zwei__ Instanzen eines Steuerelements (ein Label) verwendet, um es zu erreichen. Aber das Zeichnen des Frosches entlang der großen Karte ist auch eine gute Option. – TaW

+0

Es ist besser, wenn Sie Ihre Spielobjekte unabhängig von den Steuerelementen machen und GDI + verwenden, um sie auf einer Zeichenfläche zu zeichnen, aber wenn Sie weiter verwenden möchten Steuerelemente als Ihre Spielobjekte, finden Sie diesen Beitrag möglicherweise hilfreich: [Wie man zwei transparente Ebene mit C#?] (http://stackoverflow.com/a/36102074/3110834) –

Antwort

0

WinForms unterstützt keine echte Alpha-Transparenz. "Transparent" -Steuerelemente geben nur den Hintergrund des übergeordneten Formulars wieder - die Steuerelemente können nicht wirklich in der Z-Achse überlagert und gemischt werden.

Was Sie wirklich wollen, ist nicht möglich. Das Implementieren eines Spiels mit WinForms-Steuerelementen und GDI (System.Drawing) ist jedoch eine schlechte Idee - die Leistung ist schrecklich (teilweise aufgrund der Microsoft-Lähmung von GDI seit Windows Vista durch Entfernen der Hardwarebeschleunigung vieler Operationen) und es gibt endlose Probleme mit inkonsistenter Doppelpufferung und DPI-Skalierung.

Ich schlage vor, dass Sie den Rendering-Layer Ihres Spiels in Unity, Direct2D oder SDL umschreiben.

+0

Dies ist für eine Schule Aufgabe, also habe ich WinForms verwenden. Danke trotzdem – Zugoldragon

+0

@Zugoldragon Dann schlage ich vor, dass du deine eigene 'Control'-Unterklasse implementierst und das Spiel manuell mit GDI zeichnest, ohne irgendwelche überlappenden Steuerelemente zu benutzen. Das wird funktionieren und Ihnen erlauben, Transparenz zu verwenden. – Dai

+0

wie dieser? http://stackoverflow.com/questions/395256/transparent-images-with-c-sharp-winforms/434706#434706 – Zugoldragon