Entwickler-Ecke

Multimedia / Grafik - Panel als Overlay über einem anderen Panel


Määx - So 08.09.13 15:44
Titel: Panel als Overlay über einem anderen Panel
Hallo zusammen,

ich habe eine Zeitleiste erstellt, die per Timer alle paar Sekunden wächst. Dies wird in einem Panel via Graphix.drawLine() umgesetzt. Zwischendurch male ich kleine Bildchen auf die Zeitleiste wenn etwas bestimmtes passiert ist. Manchmal habe ich jedoch das Problem, dass die Timeline über das Bildchen gemalt wird. Also habe ich ein zweites Panel über das erste gelegt, den Hintergrund auf Transparent gesetzt und auf das zweite Panel die Bildchen gemalt. Leider wird die Timeline nun nicht mehr angezeigt.
Was mache ich falsch? Oder kann ich es einfacher machen? Kann ich vll direkt im Graphics-Objekt in zwei Ebenen zeichnen?

Vielen Dank für eure Hilfe
Määx


Ralf Jansen - So 08.09.13 16:27

Winforms?

Wenn ja sei dir bewusst das Winforms keine Transparenz beherrscht. Transparenz bedeutet nicht "zeige das was unter mit liegt und male drüber" sondern "nimm anstatt meiner Backcolor die Backcolor meines ParentControls". Wenn du mehrere Graphikobjekte hast die du übereinander zeichnen willst solltest du die selber auf dem gleichen Control malen.


Th69 - So 08.09.13 16:30

Hallo,

ich nehme an, du benutzt WinForms?
WinForms unterstützt keine Transparenz bei Controls, sondern nur auf die Form bezogen.

Deiner Beschreibung nach zeichnest du aber falsch, d.h. du solltest sämtliche Zeichenoperationen im Paint-Ereignis durchführen. Und dort kannst du dann ja selber entscheiden, in welcher Reihenfolge gezeichnet wird, s.a. Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox) [http://www.mycsharp.de/wbb2/thread.php?threadid=21782].

Edit: ah, zu spät (oder "2 Dumme - eine Antwort" :lol: )


Määx - Mo 09.09.13 08:58

Halo zusammen,

erstmal vielen Dank für die Antworten. Ich habe das mit Absicht aus der OnPaint Methode wieder rausgenommen, da ich dachte, dass es nicht so viel Sinn macht jedesmal das gesamte Panel neu zu zeichnen, sondenr ausreicht immer nur das bild drüber zu legen bzw die Zeitleiste zu verändern. Aber wenn das der korrekte Weg ist und WinForms keine Transparents (ist ja interessant und war mir bisher auch nicht klar! Danke!) unterstützt werde ich es mal entsprechend herbivores Anleitung umsetzen

Vielen Dank
Määx