MouseEnter auf transparentem Hintergrund

RedWraith

Mitglied
Hi !

Ich bastele im Moment an einem Menü in VB .NET, dass eine nicht-quadratische Form hat.
Das geht ja in der Regel so, dass man ein Bild mit der gewünschten Form quadratisch und teilweise transparent erstellt und dann als Hintergrund einfügt.

Also habe ich eine Form erstellt, FormBorderStyle=None gesetzt und BackgroundImage={Image}. Außerdem habe ich dann noch für die Transparenz BackgroundColor und TransparencyKey auf Color.Fuchsia gesetzt. Diese Einstellungen erzeugen auch den gewünschten Effekt (Siehe Anhang).

Mein Problem sind jetzt die Mouse Events, die ausgelöst werden, wenn die Maus das Fenster betritt bzw. verlässt. Denn die beiden Events MouseEnter und MouseLeave werden nur dann ausgelöst, wenn man auf den nicht-transparenten Bereich kommt.

Und das ist das Problem. Ich bräuchte es eigentlich, dass das Event ausgelöst wird, sobald die Maus in die gesamte Form eintritt und nicht nur in den sichtbaren Bereich.

Weiß jemand, wie man das umgehen kann oder so ?
 

Anhänge

  • cat.png
    cat.png
    92,4 KB · Aufrufe: 10
Warum benutzt du dann nicht einfach MouseHover (benutze ich jedenfall), sowie MouseLeave für die Form?

Ich benutze diese Dinge jedenfall für mein Programm, ich zeig mal paar Bilder:
lpxc41fxn3k1.png

oy1lnxtmsfvu.png


Der Code für MouseHover:
Code:
Private Sub PictureBox1_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseHover
        PictureBox1.Image = My.Resources.menu_newgame_select
    End Sub

Der Code für MouseLeave:
Code:
Private Sub PictureBox1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
        PictureBox1.Image = My.Resources.menu_newgame
    End Sub

MfG
Harry Fan8
 
Um dich richtig zu verstehen: ist es wichtig, dass die Events so ausgelöst werden, als würde es sich um eine rechteckige Form handeln, oder würde es ausreichen neue Events (mit anderen Namen) einzuführen?

Für Letzteres könntest du einen Maus-Hook setzen. In diesem Post habe ich das Thema (zu einer anderen Fragestellung) mal angeschnitten. Ein Hook ist aber nichts Schönes und verwendet doch relativ viel Rechenleistung. Deswegen: Was genau hast du vor? Vielleicht gibt es eine elegantere Lösung.

@Harry Fan8: Ich verstehe nicht, wie das MouseHover-Event hier weiterhelfen soll. Ich habe es nicht getestet, aber ich vermute, dass das MouseHover-Event genauso wenig ausgelöst wird wie die Enter- und Leave-Events.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück