Wie zeichne ich digitales Signal in WPF?

8

Ich muss ein digitales Signal zeichnen und jeden Teil der Zeilen in WPF verschieben können.

Wie im Bild unten gezeigt, zeigen die Pfeile an, in welche Richtung der Teil der Linie bewegt werden kann. Durch Klicken und Ziehen des "anklickbaren Bereichs" wird das gesamte Quadrat nach links oder rechts verschoben.

Ich habe mir einige Möglichkeiten ausgedacht:

  1. Polyline Objekt. Aber ich kann nicht jeden Teil der Linie kontrollieren.
  2. Line Objekt. Bei jeder Änderung sollten alle Linien ihre Standorte anpassen. Schwer zu kontrollierende "anklickbare Fläche". Vielleicht auch kompliziert.
  3. Border Objekt. Jeder Abschnitt wird tatsächlich ein Rahmen sein, der die entsprechende Grenzseite ein- / ausblenden wird. Ich bin mir nicht sicher, wie einfach es ist, bewegliche Seiten der Grenze zu machen.
  4. Andere Optionen ...

Meine Frage ist, was ist der richtige Weg, um damit anzufangen?

    
theateist 04.03.2014, 22:29
quelle

2 Antworten

0

Ein paar Dinge zu beachten ...

  • a Thumb ist ein gutes Steuerelement, mit dem Sie Ihre ziehbaren Objekte starten können, da es bereits geeignete Ereignisse enthält, mit denen Sie es verschieben können. Indem du es templatierst, kannst du ihm jede Form geben, die du magst.

  • Sie können durch clevere Verwendung von Grid und entsprechend platzierten Grid Splittern kostenlos ziehbare Linien erhalten. Wenn das nicht funktioniert, könnten 4 Rechtecke gut funktionieren. Sie fügen sie in DockingPanel mit der Platzierung oben, links, rechts und der letzten Füllung ein, und Sie haben genug Primitive, um auf alle gewünschten Ereignisse zu reagieren.

flq 11.03.2014, 22:14
quelle
0

Ich kann das aufschreiben, wenn Sie möchten, aber hier ist, wie ich es tun würde ...

Pflegen Sie eine Liste von Paar & lt; x_position, Höhe) & gt; Sortieren Sie es nach X. Tun Sie dies in einem benutzerdefinierten Steuerelement.

Zeichnen Sie das in einer for-Schleife. Ermitteln Sie Klicks, indem Sie die Liste durchsuchen. Handle einige Maus zieht, Bildschirm aktualisieren.

Die for-Schleife würde auf meine Liste [i] und meine Liste [i + 1] schauen. Zeichnen Sie ein Rechteck mit dieser Information.

Ich programmiere normalerweise nicht in WPF, aber ich kann es in einer halben Stunde herausfinden, wenn Sie möchten.

Hier ist ein Code ............. Addiere Code zum Namespace, baue dann und füge die Komponente zum Formular hinzu:

%Vor%

Wenn Sie die Segmente ziehen, überlappen Sie sie nicht - ich habe es nicht dafür codiert. Aber das ermöglicht es, das Signal zu sehen und das Signal zu bewegen.

Nach der Größenänderung mit der Maus:

PS: Ich habe nicht versucht, den Produktionscode zu optimieren oder zu versuchen, sondern habe ihn einfach rausgeschmissen.

    
CharlesW 11.03.2014 21:32
quelle

Tags und Links