2017-08-30 2 views
0

Ist es möglich, die Maus beim Ziehen einer WPF-Komponente zu übernehmen?WPF - Hijack Mauseingabe während des Ziehens?

Wir haben ein Polardiagramm, das mit der Maus gezeichnet werden muss.

Anstatt Snaping und erfordern den Benutzer, um etwas Geschicklichkeit haben, um die Kurven anzupassen, ist es möglich, die Mauseingabe zu entführen, und Maus x zu konvertieren, um die Grad/Rotationen folgen und Maus y folgen der Magnitude?

Polar mouse mapping

Blau darstellt, in dem der Zeiger rot nach einem Drag vom Ursprung enden würde.

+0

können Sie den Code zum Zeichnen liefern? Wie bestimmen Sie, wann ein Wechsel der Magnitude auftritt? beginnt die Zeichnung mit einem Mausklick? =! –

+0

Es ist, wenn ein Ziehen auftritt. Dies ist derzeit theoretisch, da ich neu in C# und wpf bin. Nein, ich kann den Code für die aktuelle Zeichnung nicht teilen, da dies wahrscheinlich gegen die Lizenz verstoßen würde und derzeit nicht wie beschrieben funktioniert. Was ich versuche herauszufinden, ist, dass es möglich ist oder Hinweise, so dass ich begründen kann, dass die Zeit, die benötigt wird, um Code in einem neuen Framework zu refaktorieren, die Verbesserung der Benutzerfreundlichkeit wert ist. –

+0

"Ich versuche zu sondieren, ist, dass es möglich ist oder Hinweise," Ich nehme an, Sie erwarten nicht, dass jemand den Code für Sie hier schreiben wird. Ein Tipp wäre, zu untersuchen, wie man die Diagrammkoordinaten von der Cursorposition erhält und wie man die Cursorposition programmatisch ändert. –

Antwort

1

Wie andere erwähnt, ist es sehr schwer, etwas zu schreiben, ohne Code zu sehen, den Sie bis jetzt bekommen haben. Aber das wäre meine Meinung. Eines der gängigen Muster in WPF ist MVVM. MVVM steht für Model View ViewModel. Der Schlüssel ist, dass Sie die Werte, die Sie zeichnen, oder grundsätzlich alles in einem ViewModel anzeigen lassen, und zeichnen Sie das Diagramm einfach per Bindung auf der Benutzeroberfläche aus dem ViewModel (Dump-Ansichten). Wenn Sie jetzt die Maus bewegen, vergleichen Sie die Erfassungskoordinaten mit den Werten für Ihre Zeichnung im Ansichtsmodell. Dann müssen Sie nach Mustern suchen, in denen Sie die Kontrolle über Ihren Mauszeiger übernehmen und die Position per Code aktualisieren möchten. Vielleicht müssen Sie die Bewegung interpolieren, um sie schön und glatt zu machen.

Auch eine sehr gute Bibliothek, um mit Ereignissen und vor allem Mausereignissen zu arbeiten, ist Rx (https://github.com/Reactive-Extensions/Rx.NET) das kann helfen, auf Mausereignisse zu reagieren und Muster zu erkennen.

Wie ich schon sagte, dies ist nur ein Ansatz, wie ich mich selbst zu einer solchen Aufgabe arbeiten würde. Da Sie bisher keinen Code zur Verfügung gestellt haben, ist es sehr schwierig, im Detail zu springen. Aber ich hoffe, dass es helfen kann, eine Strategie zu entwickeln.

Verwandte Themen