PictureBox|MausHand in bestimmtem bereich!

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Kangaroo.

    PictureBox|MausHand in bestimmtem bereich!

    Also ich hab da eine Frage:
    Ich hab eine PictureBox mit einem Hintergrundbild, nun möchte ich in bestimmten bereichen (koordinaten sind bekannt) bei mouseover eine Maushand anzeigen lassen...

    Ist das möglich? (an dieser stelle ist auch ein kreis gezeichnet, evtl könnte ich dort auch ein bild hinlegen wenn das möglich ist, wäre aber schön wenn ich das nicht machen müsste!)

    ------------------------------
    |........................................|
    |..............####..................|
    |........................................|
    |..........................####......|
    |........................................|
    |...................####.............|
    |........................................|
    |........................................|
    ------------------------------

    # = stellt die stellen da wo z.b. die hand erscheinen soll
    jenach benötigter Genauigkeit würde ich ein zweites Bild machen, bei welchem eine bestimmte Farbe für einen bestimmten Mauszeiger steht, anschließend im MouseMove Event mit LockBis die Pixelfarbe auslesen und entsprechend den Mauszeiger setzen...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Danke schonmal :) hab es mit dem mouseover event gelöst und dann die distanz zu dem punkt überprüft...

    ok da ich mehrere bereiche hab, wollte ich in einer for schleife die entfernungen berechnen lassen und dann entscheiden-> bereich oder nicht?

    problem dabei: es geht anscheinend nur bei dem letzten überprüftem bereich, da die bereiche aber nicht immer gleichviel sind (mal 2 mal 4 mal 1) müsste das ganze in einer schleife gehen...
    ja schon klar... die entfernungen hab ich in einer list ... die kann ich auch problemlos in einer for schleife durchgehen und die entfernung abfragen... aber das cursor.hand reagiert nur auf die als letztes berechnete entfernung (die als letztes abgefragte entfernung)...

    VB.NET-Quellcode

    1. For i = 0 To ergebnis.Count() - 1 Step 1
    2. If ergebnis(i) <= 5 Then
    3. pb_bild.Cursor = Cursors.Hand
    4. Else
    5. pb_bild.Cursor = Cursors.Arrow
    6. End If
    7. Next

    so habe ich das jetzt versucht... bei der letzten funktioniert alles wunderbar...

    Kangaroo schrieb:

    buettner123 schrieb:

    die entfernungen hab ich in einer lis

    Bereiche sind normalerweise Rectangles ...

    buettner123 schrieb:

    aber das cursor.hand reagiert nur auf die als letztes berechnete entfernung

    Normalerweise soll es da ja auch: Du setzt die Hand wenn die Mausposition innerhalb eines Deiner Bereiche ist, ansonsten wieder den normalen Cursor. Was also ist Dein Problem ?
    upps das mit den rectangels hatte ich noch gar nicht gesehen... meine antwort nahm bezug auf die von jvbsl ... wie das mit den rectangels gehen soll..? ka... (und würde das dann auch mit ellipsen gehn? ja oder?)

    mein problem ist, dass wenn ich die verschiedenen bereiche mit einer for schleife überprüfe die hand nur bei dem letzten bereich, der überprüft wird angezeigt wird... ich weis auch woran es liegt (an dem else cursor.hand, aber wenn ich das weglasse ist der zeiger, immer eine hand sobald er einmal in der nähe war...)


    OK EDIT//
    So simpel 8| :rolleyes:

    ein einfaches Exit For, wenn ich im Bereich bin löst das problem...

    Danke für die Hilfe geht nun alles wunderbar!
    wenn er als Bereichh einen Kreis definiert, dann über den Phythagoras die Strecke ausrechnen und den "radius" überprüfen, somit geht es mit einem Punkt...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    sie edit eins oben drüber :)

    Problem war, dass wenn der erste überprüfte bereich stimmte, die maus zwar als hand gesetzt wurde, aber da der zweite dann nicht zutraf, durch das else cursor.arrow wieder der pfeil da war...
    also ein exit for wenn ich in dem bereich bin und somit geht nun alles...

    Kangaroo schrieb:

    jvbsl schrieb:

    wenn er als Bereichh einen Kreis definiert, dann über den Phythagoras die Strecke ausrechnen und den "radius" überprüfen, somit geht es mit einem Punkt...

    In der obigen Abbildung sind es Rectangles und keine Kreise .. und selbst wenn braucht man dazu immer noch einen Punkt + Radius

    die abbildung oben sollte nur zur veranschaulichung dienen, damit ihr euch besser vorstellen könnt was ich meine...
    das eigentlich sind kreise..
    über vektoren berechne ich jetzt die entfernung des mauszeigers zu den kreismittelpunkten und setz entsprechend den cursor.hand
    If ergebnis(i) <= 5 Then

    Mindestradius = 5 ;)
    einen Punkt wird er also bereits haben(wie kommt er sonst auf Ergebnis?
    das mit der Abbildung hab ich jetzt nicht so genau genommen(ich hätte sogar an eine beliebige Form gedacht^^)

    und gelöst ist es ja ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---