Wie zeichne Verbindungslinien zwischen zwei Kontrollen auf einem Raster WPF
Bin ich erzeugen von controls (z.B. Taste), die auf einem raster. Ich möchte zum erstellen einer Verbindungslinie zwischen den Kontrollen.
Sagen Sie Sie tun mousedown auf eine Schaltfläche, und lassen Sie die Maustaste über eine andere Schaltfläche. Dies sollte ziehen Sie eine Linie zwischen diesen beiden Tasten.
Kann jemand helfen mir oder geben Sie mir einige Ideen, wie dies zu tun?
Vielen Dank im Voraus!
InformationsquelleAutor der Frage Scooby | 2010-05-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mache ich etwas ähnliches; hier ist eine kurze Zusammenfassung was ich gemacht habe:
Drag & Drop
Für den Umgang mit der drag-und-drop zwischen Steuerelementen gibt es einiges an Literatur auf dem web (suchen Sie einfach WPF-drag-und-drop). Die Standard-drag-and-drop-Umsetzung ist zu Komplex, IMO, und wir landeten mit einigen anhängenden DPs um es einfacher zu machen (ähnlich wie diese). Im Grunde wollen Sie eine drag-Methode, die wie folgt aussieht:
Auf das Ziel AllowDrop auf true, dann fügen Sie ein Ereignis Drop:
Zeichnen Sie die Linie,
Nun der knifflige Teil! Jedes Steuerelement stellt eine AnchorPoint DependencyProperty. Wenn die LayoutUpdated Ereignis ausgelöst wird (d.h., wenn das Steuerelement bewegt/ändert/etc), die Steuerung berechnet den AnchorPoint. Wenn Sie eine Verbindungslinie Hinzugefügt wird, bindet Sie an die DependencyProperties der Quell-und Ziel-durch Ankerpunkte. [BEARBEITEN: Als Ray Brennt darauf hingewiesen, in den Kommentaren die Leinwand und das Netz muss nur im selben Ort; Sie brauchen nicht zu int der gleichen Hierarchie (obwohl Sie auch sein mögen)]
Für die Aktualisierung der position DP:
Für die Erstellung der Linie Klasse (in XAML):
Wenn Sie wollen zu bekommen eine Menge Liebhaber, die Sie verwenden können, eine MultiValueBinding auf Quelle und Ziel, und fügen Sie einen Konverter erstellt, der PathGeometry. Hier ist ein Beispiel aus GraphSharp. Mit dieser Methode fügen Sie Pfeile, um das Ende der Zeile, verwenden Sie Bezier-Kurven, um es natürlicher Aussehen, route der Linie um andere Steuerelemente (obwohl dies könnte schwieriger werden als es klingt), etc., etc.
Siehe auch
InformationsquelleAutor der Antwort