Verbindungen grafischer Objekte

  • Hallo zusammen,meine Frage(n):im beigefüftem Bild ist ein Ausschnitt aus einer Software zumerstellen von Flowchart-Diagrammen zu erkennen. Solche Programmegibt es ja wie Sand am Meer, nicht nur für Flow-Chart sondern zB auchzumSimulieren (SPICE,BORIS) usw.Wie funktioniert das Verbinden von solchen graf. Objekten?Die Verbindungen werden immer autom. geroutet wenn man zwei Konnektorenanklickt, weiters kann man Sie verschieben löschen usw, und wenn manzB ein Objekt verschiebt werden die Verbindungen auch sauber mitverschoben.Wie wird das zB in VC++, Java, oder VB gemacht, gibt es da Beispielcode,Tutorial oder was Ähnliches? Oder gibt es irgendwo ein kleines Projekt diesbezüglich?

    Vielen Dank im voraus

  • Spontaner Ansatz: Die Objekte haben ein Event, das beim Verschieben ausgelöst wird; Die Verbindungslinien registrieren sich bei diesem und richten sich, wenn das Event ausgelöst wird, aus.

    -- Stefan

  • Also ich entwickle grad für ein Praktikum einen grafischen Editor mit dem Eclipse GEF Framework (http://www.eclipse.org/gef/), der fast genauso aussieht wie im Bild. Du kannst dir da ja den Source des Frameworks runterladen und die entsprechenden Klassen genauer anschauen, auch wenns für Einsteiger evtl. ein wenig unübersichtlich ist. Vor allem die Klasse org.eclipse.draw2d.AbstractRouter und ihre Subklassen wären vermutlich interessant.

    Soweit ich das verstehe, werden die Verbindungsenden da mit sogenannten ConnectionAnchors an einer Figure fixiert und jedesmal wenn sich die Figure bewegt, wird auch die Connection neu berechnet.

    Ich hab aber leider noch keinen Weg gefunden, wie man ein vernünftiges Manhattan Routing mit einer Kollisionsabfrage verbindet (so wie in dem Bild), bei draw2d scheint es das nur bei ShortestPathConnectionRouter zu geben, beim Manhattan geht er einfach ohne Rücksicht durch meine Figures durch, hat da evtl. jemand eine Idee?

    "Sausen Sie mit mir ins Laplace-Land" - KAISER 4ever :D

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!