32 Stimmen

Welche Optionen gibt es für das Layout gerichteter oder ungerichteter Graphen in .NET?

Unter Grafik Ich meine damit etwas, das diesen Bildern ähnelt:

Die ideale Lösung wäre:

  • nur verwalteten Code verwenden
  • Ausgabe in ein Bitmap-Bild ermöglichen
  • Ausgabe an WPF-Elemente erlauben
  • eine Art interaktive Oberfläche für die Darstellung des Graphen, die das Zoomen, Schwenken und die Neuanordnung von Knoten unterstützt

Ich bin auch daran interessiert, von Projekten zu hören, die möglicherweise als Ausgangspunkt für diese Art von Arbeit dienen könnten. Wenn es eine gewisse Entwicklung erfordert, um das zu erreichen, was ich will, dann bin ich bereit, es in Angriff zu nehmen. Der komplexeste Teil dieses Ziels scheint darin zu bestehen, das Diagrammlayout in einem vernünftigen Zeitrahmen zu erstellen.

0 Stimmen

Als Notiz an mich selbst gibt es hier eine nett aussehende Clojure-Bibliothek lisperati.com/vijual

12voto

Jamie Penney Punkte 9110

Grafik# ist ebenfalls eine weitere Option. Ich habe es nicht persönlich benutzt, aber ich wollte es mir schon lange einmal ansehen.

0 Stimmen

Nach einem kurzen Blick sieht Graph# ziemlich interessant aus. Danke für den Link.

0 Stimmen

Ich habe es noch nicht ausprobiert, aber leider heißt es, dass das Sugiyama-Layout fehlerhaft ist. Das ist meiner Erfahrung nach das nützlichste Layout, also wird es hoffentlich irgendwann gepatcht werden.

0 Stimmen

Seit meinem letzten Kommentar sieht es so aus, als ob dieses Projekt wirklich vorangekommen ist (einschließlich des Sugiyama-Layouts). Ich habe es noch nicht ausprobiert, aber das nächste Mal, wenn ich so etwas brauche, wird es die erste Lib sein, die ich ausprobiere.

8voto

Dirk Vollmar Punkte 166522

Microsoft Research bietet ein Tool namens MSAGL (Automatic Graph Layout, früher GLEE genannt) für .NET an.

Die MSAGL ist hier verfügbar: http://research.microsoft.com/en-us/downloads/f1303e46-965f-401a-87c3-34e1331d32c5/default.aspx

Haftungsausschluss: Ich habe das Tool nicht benutzt und weiß daher nicht, ob es für Sie geeignet ist (und ich weiß auch nichts über die Lizenzbedingungen, anscheinend ist es nur für nicht-kommerzielle Anwendungen gedacht). Aber es sieht zumindest interessant aus.

0 Stimmen

Ich habe zuvor GLEE v1 verwendet. Es war kostenlos, aber ziemlich grob. Die neueste Version (1.2) kostet 150 GBP (220 USD). Ich würde gerne etwas über kostenlose Lösungen hören.

0 Stimmen

Die Homepage des Projekts finden Sie übrigens hier: research.microsoft.com/de-us/projects/msagl/default.aspx

0 Stimmen

NDepend verwendet es, daher denke ich, dass die Lizenz eine kommerzielle Nutzung erlaubt. codebetter.com/blogs/patricksmacchia/archive/2008/09/09/

8voto

Ich arbeite im NDepend-Team und kann das bestätigen: Wir sind von GraphViz zu MsAgl im September 2008 und auch die MsAgl-Lizenz erlaubt tatsächlich eine kommerzielle Nutzung. Hier sind ein paar Beispielbilder von MsAgl-Grafiken in NDepend integriert (alles ist interaktiv, Knoten sind verschiebbar/auswählbar/entfernbar/anklickbar, Kanten sind bearbeitbar/auswählbar/entfernbar/anklickbar, das Layout ist zoombar, und auch wenn es sauberer sein könnte, ist die MsAgl-API sauber genug, um damit zu arbeiten):

enter image description here enter image description here enter image description here

3voto

Coincoin Punkte 26516

Graphviz ist meiner Meinung nach auch heute noch eine der besten Graphbibliotheken, die es gibt. Allerdings ist die Integration in .Net eine Qual.

Es ist möglich, das Kommandozeilentool aufzurufen, um eine Formausgabe auf der Grundlage Ihrer Diagrammeingabe zu erzeugen. Dann lesen Sie die Ausgabe und legen die Elemente auf ein benutzerdefiniertes Steuerelement, das die von Graphviz berechneten Formen anzeigt. Es ist sehr umständlich, aber es ist der beste Weg, den unser Team vor ein paar Jahren für die Integration von Graphviz mit .Net gefunden hat.

Vielleicht gibt es heute eine bessere Lösung; damals war GLEE noch sehr embryonal und ich habe die Fortschritte, die Microsoft seitdem gemacht hat, nicht gesehen.

0 Stimmen

GraphViz kann über COM mit WinGraphViz aufgerufen werden, obwohl die Ausgabe in eine Datei geschrieben und dann von der Festplatte gelesen werden muss, was unglücklich ist. Außerdem muss eine zusätzliche DLL bei COM registriert werden (afaik), damit es funktioniert. Die DOT-Syntax ist ebenfalls einfach und leicht zu handhaben.

0 Stimmen

Ich wusste nichts von WinGraphViz, schön. Dies ist im Grunde, was wir taten, wir generiert einen Punkt, kompiliert es und analysiert die Ausgabe zu unserem Graphenmodell.

0 Stimmen

Die letzte Version von WinGraphViz stammt aus dem Jahr 2004. Leider ist es nur eine COM-Schnittstelle. Vielleicht kann jemand herausfinden, wie man die Bilddaten über COM transportieren kann, um das Dateisystem zu umgehen. Ich frage mich, wenn die SVG-Ausgabe für Positionsinformationen geparst werden könnte, dann in Objekte konvertiert & WPF gerendert ...

2voto

Steves Punkte 2593

Nur um die Liste der Möglichkeiten zu vervollständigen: Graphviz4Net ist eine Open-Source-Implementierung dessen, was Coincoin in seiner Antwort vorgeschlagen hat.

0 Stimmen

Sieht wirklich schön aus, wenn auch leider nicht ganz gelungen. Die WPF-Unterstützung sieht aber toll aus.

0 Stimmen

@DrewNoakes Warum suchen Sie nach 100% verwaltetem Code: Was ist der Vorteil?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X