none
Kollisionen von Usercontrols innerhalb eines Canvas überprüfen RRS feed

  • Frage

  • Hallo,

    Ich würde gerne wissen, ob es möglich ist, Kollisionen von UserControls innerhalb eines Canvas zu überprüfen.

    Das heißt, ich bewege ein UserControl im Canvas mithilfe von Canvas.SetTop() und Canvas.SetLeft(). Jetzt möchte ich überprüfen, ob das UserControl mit einem anderen kollidiert. Auf welche weise kann man so eine Kollisionsberechnung durchführen?

    Ich hoffe mir kann jemand bei meinem Problem helfen.

    Sonntag, 23. Januar 2011 22:10

Alle Antworten

  • Eine Möglichkeit wäre die HitTest-Methode des VisualTreehelpers zu nutzen.
    Montag, 24. Januar 2011 07:33
    Beantworter
  • Wie kann ich die entsprechenden Ränder der Kollidierenden Elemente vergleichen? Also ich habe 2 UserControls und deren entsprechende Positionen als Point, wie kann ich jedoch z.B. Feststellen, ob das eine Objekt am unteren Rand des UserControls kollidiert, also nicht genau an der Positionskoordinate, sondern z.B. 100 pixel versetzt?
    Samstag, 12. Februar 2011 02:24
  • Teste mal die VisualTreeHelper Methode GetContentBounds.
    Dann bekommst du ein Rect zurück.
    Das Rect hat eine IntersectsWith Methode mit der du eine Collision testen kannst.

     

    Sonntag, 13. Februar 2011 11:44
    Beantworter
  • Die Methode gibt mir ein Empty-Rect zurück. Woran kann das liegen?

    -> Habe die Lösung gefunden, ich benutze jetzt die Methode GetDescendantBounds.

     

    Allerdings bekomme ich bei jedem Usercontrol für X und Y Werte 0 zurück. Woran liegt das?

    Dienstag, 29. März 2011 19:23
  • Welches Control übergibst du bei der GetDescendantBounds Methode?

     

    Freitag, 1. April 2011 06:59
    Beantworter