Ich habe ein Programm implementiert, welches 'Context Preserving Visual Links' berechnet und diese verwendet, um mehrere Highlight Bereiche auf dem Bildschirm zu verbinden. Diese 'CPVL' sollen dabei die visuelle Darstellung auf dem Bildschirm so wenig, wie moeglich stoeren.
In meinem Programm gibt es mehrere verschiedenen Visualisierungen einer ausgewaehlten Festplatte
Als Programmiersprache wurde C# verwendet, da es sehr komfortable Funktionen bereitstellt (im Zusammenspiel mit Visual Studio 2012 Ultimate).
Zur Darstellung des User-Interfaces verwendet ich das WPF - Framework. Es bietet alle Moeglichkeiten und laesst sich leicht erweitern und z.B. ein neues Control implementieren (siehe Treemap).
Zur Berechnung der CPVL und dem Zeichnen der Highlight und Links wurde Cudafy verwendet. Dies ist ein CUDA - Wrapper fuer .Net und sehr komfortabel zu Verwenden. Man kann fast ganz normale Funktionen schreiben (GPU-Kernels), die dann von einem Translator von C# in C uebersetzt wird und man so alle Vorteile von VS verwenden (wie z.B. Intellisense). Cudafy ist auch die einzige externe Bibliothek, die ich verwendete.
Wenn das Programm gestartet wurde, muss ueber das Menue eine Festplatte ausgewaehlt werden, damit diese nach Dateien und Ordnern durchsucht wird.
Wenn dies geschieht, wird (sofern moeglich) gleich das Userinterface upgedatet. Dies geschieht aber nicht immer, daher gibt es eine Statusleiste, in welcher die aktuellen Staende des Durchsuchens wiedergibt.
Nachdem das Scannen abgeschlossen weden alle Visualisierungen aktualisiert und die komplette Treemap gezeichnet.
Sofern ein Ordner, eine Datei, eine Dateierweiterung oder ein Teil der Treemap ausgewaehlt wird, werden die entsprechenden Bereiche der einzelnen Visualisierungen selektiert und 'gehighlighted'. Dies sind dann die Highlights, die mit den Visual Links verbunden werden. Im Programm sind standardmaessig die 'Simple Links' aktiviert. Diese sind einfach gerade Verbindungslinien zwischen den Highlights. Die anderen sind die CPVL.
Ein moegliches Resultat ist in Folge zu sehen
Man kann schon die simplen Links erkennen, die mit der inversen Hintergrundfarbe dargestellt werden.
Mit einem Doppelklick auf ein Elements der Treemap oder eine Datei wird versucht diese Datei oder der Ordner zu oeffnen.
Bei einem Doppelklick auf ein Elements der Ordnerstruktur wird in der Treemap nur dieser Ordner angezeigt. D.h. z.B. nur der Ornder 'Visualisierung 2 LU' mit allen Unterordnern und Dateien. Dies sieht dann wie folgt aus.
Die Einstellungen zu der Treemap findet man ueber den Menuepunkt 'Treemap'. Es gibt drei verschiedene Methoden der Treemap - Visualisierung. Dies sind die Moeglichkeiten
Um einen besseren Eindrucke von der Ordner - Struktur auch in der Treemap zu bekommen, ist es auch moeglich, diese 'stacked' darstellen zu lassen. Eine moegliche Ausgabe dabei ist in folgendem Screenshot zu sehen (squarified)-
Man kann auch fuer die Visual Links ein paar Einstellungen treffen. Dies geschieht ueber den Menuepunkt 'Visual Links'.
Zuerst steht die Auswahl zwischen den simplen Visual Links und den CPVL zur Verfuegung. Wenn diese aktiviert werden sehen die Visual Links aus dem vorherigen Screenshot wie folgend aus (mit Zoom auf den Ordner). Dabei werden die geringsten Distanzen zu einem gemeinsamen Mittelpunkt berechnet und diese Wege dann gezeichnet (wieder mit inverser Hintergrundfarbe).
Weiters kann man in dem Menuepunkt einstellen, wie sehr die CPVL von der PenaltyMap abhaengig sein sollen/bzw. legen deren Wichtung fest, sowie die Wichtung der Vermeidung von Highlights selbst. Im naechsten Screenshot ist der Effekt bei hoeheren Werten zu sehen. Dabei faellt auf, dass bei entsprechend hohen Werten sogar der Weg aussen herum 'kuerzere' Wege bedeutet, als 'durch' die Treemap.
Wenn einem die Farben nicht zusagen (diese werden zufaellig bestimmt), kann man mit einem Click auf 'New Colors' neue Farben fuer die einzelnen Dateitypen generieren.
Zu guter Letzt hat man noch die Moeglichkeit, sich die PenaltyMap anzeigen zu lassen. Diese wird dann verkleinert ueber dem rechten unteren Teil des Programmes angezeigt. Sie aktualisiert sich immer automatisch, wenn sich Aenderungen an den Visualisierungen ergeben und eine Neuberechnung erforderlich machen.
Jede der Visualisierungen ist in einem Tab-Control untergebracht. Damit is es moeglich, die einzelnen Visualisierungen untereinander zu tauschen. Dies geschieht mittels 'drag and drop' der Tabs selbst. Wenn man z.B. den Tab der Treemap auf den Tab der Dateien zieht, aendern diese Tabs ihre Positionen und die Visualisierungen werden aktualisiert. Dies ist hier zu sehen.