User Control

Hallo,
ich habe mir ein kleines User Control „gebastelt“, mit dem man verschiedenste Buttons selber machen kann. Man zeichnet sich einfach in einem Grafik-Programm den Button im nicht-gedrückten bzw. im gedrückten Zustand, übergibt dass dem User Control und fertig.

Das funktioniert sogar mit runden Knöpfen: d.h. nur der runde Teil ist anklickbar, obwohl das Control selber natürlich eckig ist!! Diese funktionalität unterstützt VB beim User Control ganz von selbst mit den Properties „MaskColor“ und „MaskPicture“. Ein kleines Test-Projekt zum Ausprobieren mit kompletten Source-Code gibts unter
https://www.my-files.de/mkatlein/Oeffentlich/VisualB…

Jetzt zu meinem Problem: ich möchte ein „Hovern“ einbauen. Das wäre, wenn die Buttons immer eckig sind, ja relativ leicht. Wie funktioniert das, wenn die Buttons rund sind?!? Der „Hover-Effekt“ soll natürlich nur dann eintreten, wenn die Maus über den runden Teil des Buttons fährt!!!

Any ideas?!?!?

Any ideas?!?!?

Führe eine dritte Grafik für den Hover-Zustand ein.

holli

Führe eine dritte Grafik für den Hover-Zustand ein.

Das ist mir schon klar … aber wie erkenne ich, ob die Maus über dem „tatsächlichen Button“ (das runde/ovale Bild!!!) ist. Bei einem rechteckigen Button habe ich das Problem ja nicht.
michL

Im MouseOver könntest du die Farbe des Punktes unter dem Mauszeiger auswerten und wenn sie dem Hintergrund entspricht ist der Button nicht getroffen.

Hallo

Jetzt zu meinem Problem: ich möchte ein „Hovern“ einbauen. Das
wäre, wenn die Buttons immer eckig sind, ja relativ leicht.
Wie funktioniert das, wenn die Buttons rund sind?!? Der
„Hover-Effekt“ soll natürlich nur dann eintreten, wenn die
Maus über den runden Teil des Buttons fährt!!!

Ich habe es zwar selbst noch nicht getestet, aber mir scheint das HitTest-Ereignis des UserControl’s dafür geeignet. Einer der Parameter hängt nämlich von der MaskRegion ab. Diese ergibt sich aus MaskPicture und MaskColor.

Sag mir bitte bescheid, ob es geklappt hat, würde mich nämlich auch interessieren. :sunglasses:

Im Notfall kannst du ja immer noch die Variante mit der Farbabfrage des Pixels machen, wie in der anderen Antwort beschrieben.:wink:

CU
Markus

Ich habe es zwar selbst noch nicht getestet, aber mir scheint
das HitTest-Ereignis des UserControl’s dafür geeignet. Einer
der Parameter hängt nämlich von der MaskRegion ab. Diese
ergibt sich aus MaskPicture und MaskColor.

Hurra, ein absolut brauchbarer Teilerfolg:
Wenn man folgende Properties setzt

  • HitBehavior = Use Region
  • Windowless = True
    erhält man den UserControl_HitTest()-Event. Im Parameter ‚HitResult‘ steht dann eine 3, wenn sich die Maus über der MaskRegion befindet.

Somit läßt sich der Hover-Effekt zumindest einmal auf vernünftige Art und Weise „einschalten“. (absolut cool - danke schön!!)

Jetzt muß ich nur noch irgendwie mitbekommen, daß die Maus den „MaskRegion“-Bereich wieder verlässt, damit ich den Hover-Effekt wieder ausschalten kann. Einen HitTestLost()-Event gibt’s leider nicht, oder doch?!?!?

Wer hat noch ideen - bitte melden!?!?!?
sanx from michL