C# Controls übereinander legen

Fou-Lu schrieb:
Aber ich hab irgendwo gelesen, dass man neben dem Framework 4.0 irgendwie noch das Framework für WPF nebenbei installieren muss.
Nö, musst du nicht. WPF ist in 3.5 und 4.0 integriert.
 
Naja dann ists ja um so besser, aber das ganze Projekt auf WPF umzustellen würde viel zu viel Aufwand machen jetzt. Das kann man dann in Zukunft ja nach und nach umsetzen, aber fürs erste bleib ich mal bei WinForms. Ich müsste nur irgendwie schaffen bei diesem einen Control die Transparenz hinzukriegen und zwar so, dass es nicht ständig überblendet wird :D :D :D
 
Hmm... das klingt sehr interessant. Werd ich auf jeden Fall mal ausprobieren, falls ich jetzt mit meiner letzten Möglichkeit das Panel transparent zu machen nicht weiterkomme. Werd mich dann melden sobald eine der Möglichkeiten funktioniert.

Vielen vielen Dank schon mal für die super Tipps :)
Ergänzung ()

Also gut Leute, leider muss ich euch enttäuschen. Ich habs jetzt echt nicht hingekriegt, den Transparenten Hintergrund auch wenn sich das darunterliegende Element ändert.

Weder mit WPF noch mit Gdi+. WPF selber unterstützt zwar Transparenz ja echt super, aber leider muss ich sagen der "ElementHost", den man ja in den WinForms braucht um das WPF Control benutzen zu können, NULL TRANSPARENZ besitzt! Sprich selbst wenn das Control durchsichtig ist dann scheitert es wieder am ElementHost :(

Das einzige wo ich es geschafft habe auch den ElementHost transparent zu machen war wenn ich den der PB als Kindelement hinzugefügt habe. Doch da wäre ich dann genauso weit wie bei Gdi+ auch. :mad:
 
Hallo,

ich hab einfach die ganze von Dir gewünschte Funktionalität ins TransparentPanel gepackt, es zeigt also auch das Bild an ..

Have fun. :D
 

Anhänge

Zuletzt bearbeitet:
Lol... ich quäl mich da schon seit 2 Tagen ab und lynxx packt das auf paar stunden (wenn überhaupt :) ) :D :D

Ich habs zwar noch nicht angeguckt, aber... entweder bin ich so dumm oder du bist ein genie :D :D :D

Wobei ich eher auf das zweitere Tippe xDD ;-)
 
Fou-Lu schrieb:
Lol... ich quäl mich da schon seit 2 Tagen ab und lynxx packt das auf paar stunden (wenn überhaupt :) ) :D :D

Ich habs zwar noch nicht angeguckt, aber... entweder bin ich so dumm oder du bist ein genie :D :D :D

Wobei ich eher auf das zweitere Tippe xDD ;-)
Hehe, so genau hab ich mir den Code gar nicht angesehen .. eigentlich wäre das BackBuffern in der DrawingArea noch besser aufgehoben.

Übrigens, wenn man mit Resourcen arbeitet, die am besten immer erst einer lokalen Variable zuweisen, sonst wird z.B für "test" immer dies ausgeführt:
Code:
internal static System.Drawing.Bitmap test {
  get {
    object obj = ResourceManager.GetObject("test", resourceCulture);
    return ((System.Drawing.Bitmap)(obj));
  }
}
== laaaangsam. :p

Siehe Properties->Resources.Designer.cs
 
Danke für den Tipp mit den Resourcen.

Ich habe das ganze nun überhaupt in eine einzige Klasse gepackt und statt Panel die Picturebox ableitung genohmen.

Jetzt muss ich nur noch danach aussehen lassen als wäre die Leiste ein eigenes Control und nicht nur ein Bild :D Ich muss nämlich diese Leiste aus und wieder zuklappen können. Da kommt noch ein haufen Arbeit auf mich zu.

Langsam aber sicher bin ich echt schon am überlegen ob ich nicht gleich komplett auf WPF umsteige :D (aber das wäre glaub ich sogar noch mehr Arbeit + ich müsste mich in WPF einarbeiten => kostet Zeit).

PS: noch ne Frage. Kennst du ich eigentlich mit LayeredWindows aus? Also sprich Ebenen in einem Fenster. Das wäre z.B. auch nochmals ne Idee das ganze umzusetzen. So Photoshop-like z.B.
 
Man könnte eine Klasse schreiben die mehrere Forms zu einer zusammenfasst, mittels TransparencyKey kann dann jeder "Layer" frei definieren welche Teile tatsächlich verwendet werden und man kann einzelne Layer neu zeichnen ohne das es Einfluß auf die anderen hat.

Mittels TransparencyKey kann man z.B Fenster definieren die "nicht Rechteckig" sind.
Ich hab z.B mal ein kleines Intro geschrieben, siehe Anhang. :cool_alt:
 

Anhänge

[OFFTOPIC]
Unabhängig von den bisherigen Lösungen, die, wie ich beschämender Weise zugeben muss, mir nicht angesehen habe, würd ich dir auch zu WPF raten.

Nachdem was ich aus deinen Beschreibungen heraus lese, ist WPF die bessere Wahl.
Natürlich wird es einiges an Zeit kosten sich in WPF einzuarbeiten. Vieles wird dir am Anfang umständlich vorkommen, aber am Ende wirst du zugeben, dass es sich 1. gelohnt hat und 2. du nie wieder mit Forms arbeiten möchtest :)
[/OFFTOPIC]
 
Cool, vielen Dank.
Werd ich mir gleich mal angucken und mich bei Google über dieses TransparencyKey erkundigen.

Ich glaub aber jetzt schon, dass ich damit auf dem richtigen Weg für meine Lösung bin :)

Ich hab schon mal davon gehört von diesen "Layered Windows" aber mir hat wohl das Schlüsselwörtchen gefehlt. Vielen Dank nochmal ;-)

@holy: naja ich werd mich in WPF schon einarbeiten. So ists ja nicht :)
Aber erst nach und nach. Wahrscheinlich werd ich auch meine Software nach und nach in WPF umsetzen, aber halt nicht jetzt sofort von neuem loslegen. Ich stehe kurz vor der Fertigstellung der Version 1.0 :D

Mit künftigen Versionen wird dann WPF mehr einzug erhalten und irgendwann natürlich komplett auf WPF umsteigen ;-)
 
Hallo Leute,
im Anhang lad ich euch mal meine Version der transparenten Controls in einem Formular hoch.

Zwar mag diese evtl. etwas umständlich sein, aber für mich genügt sie bisher voll und ganz. Einen anderen Weg habe ich leider nicht finden können Controls mit einer eigenen Form (unsichtbaren/transparenten) Hintergrund auf einer PB anzeigen zu lassen die ständig ihr Bild ändert.

An sonsten wenn euch diese Lösung nicht passt und eure PB z.B. nicht ständig ihr Bild wechselt, dann könnt ihr die Lösung von CodeProject verwenden.
 

Anhänge

Zurück
Oben