Ich versuche, ein Diagramm zu visualisieren und den Leuten die Möglichkeit zu geben, damit zu spielen. Ich habe die hervorragende Graph#-Bibliothek gefunden, die ein erstes Layout erstellen kann, so dass dieser Teil abgedeckt ist. Jetzt muss ich ein Steuerelement, das tatsächlich zeichnet es und bietet die notwendige Interaktivität zu machen.
Graph# kommt mit einem netten Visualisierer selbst, aber ich mag es nicht, weil es in WPF geschrieben ist (während meine App WinForms ist), und weil ich einige mehr Interaktivität Optionen hinzufügen möchten, die ziemlich ein Remake von ihm sowieso erfordern würde.
Die Graphen, die ich zeichne, werden in der Regel ziemlich groß sein, mit etwa 100 Eckpunkten und der gleichen Anzahl von Kanten (die Graphen werden in 99 % der Fälle Bäume sein). Das bedeutet, dass das resultierende Rendering kann bis zu 2000px mal 2000px und sogar mehr sein. Die Benutzer sollten in der Lage sein, zu vergrößern und zu verkleinern, scrollen, markieren und ziehen Scheitelpunkte und Kanten, und erhalten einige Popups mit zusätzlichen Informationen, wenn der Cursor über einen Scheitelpunkt schwebt.
Ich bin besorgt, dass der Standard System.Drawing
möglicherweise nicht in der Lage sein, eine angemessene Geschwindigkeit zu liefern. Ich möchte, dass das Ziehen/Zoomen/Scrollen flüssig abläuft, und die Popups sollten sich auch mit einer kleinen Animation öffnen. Etwas wie 20fps sollte eine Notwendigkeit sein.
Ich weiß, dass ich versuchen kann, die Dinge zu beschleunigen, indem ich viele der Elemente vorrendere und sie als Bitmaps im Speicher behalte - aber das würde wahrscheinlich viel Arbeitsspeicher beanspruchen, und ich bin mir immer noch nicht sicher, ob es die nötige Leistung bringen würde.
Was denken Sie darüber?