Control Panel über einer PictureBox?

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von xXLinkeXx.

    Control Panel über einer PictureBox?

    Hallo liebe Communitiy,
    Ich hab mal wieder eine Frage, auf die ich immer noch keine Antwort gefunden habe, aber ich hoffe ihr wisst sie :D.

    Also Problem ist folgendes, ich habe eine "PictureBox" auf meinem Form. Nun möchte ich wenn die Maus über einen bestimmten Bereich geht, das sich auf der "PictureBox" ein "Panel" öffnet auf dem wiederum mehrere "PictureBox" Icons liegen, die als Buttons dienen. Dabei entsteht aber das Problem das, das "Panel" nicht durchsichtig ist und man dadurch das Bild nicht sieht, das "Panel" hat ein "Background-Image" welches zu 50% Transparent ist.

    Also wie bekomm ich das hin das man das Bild noch durch das "Panel" sehen kann und das "Background-Image" auch als Transparent erkannt wird.

    Ein Beispiel zudem was ich gerade schriftlich versucht habe zu erklären, hab ich nur als Flash auf n24.de gefunden habe einfach ein Video anklicken und dann mit der Maus über das Video gehen und schon kommt ein "Panel" mit "Buttons" hoch geschwenkt.

    MfG. xXLinkeXx :)
    Hallo,
    mein Vorschlag:
    Panel rausschmeißen, mit GDI ein halbtransparentes Rechteck malen und die Buttons mit visible=true sichtbar machen. Scheint mir die effektivste Lösung.
    :D Viel Vergnügen :D
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Wenn das dann aber z.B. so aussieht:

    VB.NET-Quellcode

    1. Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
    2. e.Graphics.DrawImage(My.Resources.control, 178, 356, 355, 62)
    3. End Sub

    Wie soll man dann das Click-Event für die Buttons machen weil ich diese ja dann auch einzeln drauf Paintenmuss.

    Und dann soll das ganze noch in das PictureBox1_MouseMove Event, aber wie macht man das mit e.Graphics? Die kann ich ja nur in einem Paint Event verwenden.
    Kenne mich mit GDI oder dem Paint Events noch nicht wirklich aus da ich das noch nie verwendet hab.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „xXLinkeXx“ ()

    GDI is nich wirklich soooooooooo schwer ;)
    Und die Button kannst du wie gewohnt auf deine PB ziehen. Du knipst sie einfach mit ButtonX.visible = True oder False an und aus. :)

    Edit: Bin mir nicht sicher, ob du ein Image halbtransparent zeichnen kannst... Mit SolidBrush(Color.FromARGB()) geht das, aber Images ? :?:
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Also das mit dem Image was ich auf die PictureBox Painte in einem normalem PictureBox1.Paint Event klappt schon mal aber wie kann ich solch ein Paint Event in ein MouseHover Event integrieren?
    Oder kennt vielleicht jemand ein gutes Beispiel für GDI?

    Und um ein weiteren Thread zu vermeiden kann man das Bild einer PictureBox, in der PictureBox selbst verschieben und Zoomen auf eine bestimmte Prozentzahl z.b. 100% normale Ansicht und 200% doppelt so weit rein zoomen?

    MfG. xXLinkeXx

    xXLinkeXx schrieb:

    Bild einer PictureBox, in der PictureBox selbst verschieben und Zoomen
    Die DrawImage()-Methode hat 31 Überladungen. Unter anderem gibt es eine, in der du Quell- und Zielrechteck angibst. Damit wählst du im Quellbild einen Ausschnitt aus den du in deinem Zielbild innerhalb eines beliebigen Rechtecks anzeigst. Damit kannst du Zoomen, Schieben usw.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Ja, das mit der Transparenz ging ja von Anfang an mit DrawImage() schon.
    Was noch über bleibt ist wie ich diese Paint-Methode in den PictureBox_MouseEnter mache und bei MouseLeave wieder weg mache.
    @ Vatter
    Wie kann man die einzelnen ebenen ansprechen? Damit ich z.b. den Button drauf zeichne und dann auf ihn klicken kann. Da meine Buttons ja auch Bilder sind und keine einfachen Windows Buttons sein sollen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xXLinkeXx“ ()

    meinst du nicht wohl eher Paint?..mach dazu einfach eine boolsche Variable, mit welcher du im Paint Event überprüfst, ob gezeichnet werden soll...(in die Events kommt dann noch ControlName.Invalidate rein...)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ja ich meinte Paint sorry :D
    Mit Boolsche Variable meinst du wohl Boolean (True/False) ja?
    Und wie macht man aus einer Private Sub eine Boolean Variable? Versteh das nicht :wacko:

    Weil es ist ja auch das Problem das ich je nach dem was der User klickt etwas anderes Zeichnen will, d.h. wenn auf dem ersten Paint (der Controlleiste) z.b. Info geklickt wird soll ein weiterer Paint erfolgen mit den Informationen.
    ja ich meine Boolean^^

    und du sollst dies ja nicht aus der Sub machen, eher so(Pseudo):

    Quellcode

    1. Zeichnen = FALSE
    2. Paint-Event
    3. Wenn Zeichnen
    4. //Zeichnen
    5. MouseEnter-Event
    6. Zeichnen = TRUE
    7. Invalidate()
    8. MouseLeave-Event
    9. Zeichnen = FALSE
    10. Invalidate()
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Argh da hät ich auch selber drauf kommen müssen :pinch: Danke.
    Habe meinen vorherigen Post noch editiert gehabt :rolleyes: Aber das kann ich denke ich auch damit lösen. Nur wie ich die gepainteten Icons (Buttons) anspreche damit wenn man auf das Icon klickt auch das dazu gehörige Paint erscheint.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „xXLinkeXx“ ()