Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...
Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...
Projektgruppe Visual Analytics - Medieninformatik und Multimedia ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
10.2 Desktop 181<br />
10.2 Desktop<br />
Für die Realisierung des Desktops werden dem MainWindow zwei Canvas hinzugefügt,<br />
welche grafisch übereinander liegen. Eine Canvas dient als Command Layer zur Eingabe<br />
pfadbasierter Gesten, die andere als Container für die Diagramme <strong>und</strong> das Pie-Menü.<br />
Zunächst wird der Command Layer vorgestellt.<br />
10.2.1 Command Layer<br />
Die Befehlsschicht, auch Command Layer genannt, enthält einen DiagramEventTrigger,<br />
der selber unter anderem einen Stroke <strong>und</strong> einen GestureRecognizer enthält. Sobald<br />
die Befehlsschicht berührt wird, wird ein neues Stroke-Objekt erzeugt. Ein Stroke-<br />
Objekt ist ein grafisches Element, welches eine Menge von Punkten enthält. Diese<br />
Punkte sind in ihrer Reihenfolge miteinander verb<strong>und</strong>en. Sobald ein Move-Event<br />
aufgefangen wird, wird die neue Position zum Stroke hinzugefügt. Sobald die<br />
Berührung abgeschlossen ist, also ein TouchUp-Event aufgefangen wird, wird die<br />
letzte Position ebenfalls zum Stroke hinzugefügt <strong>und</strong> letztendlich dieser Stroke<br />
vom GestureRecognizer untersucht. Erkennt der GestureRecognizer ein Viereck,<br />
wird die Action AddDiagramAction ausgeführt. Des Weiteren stehen Methoden<br />
zum Aufrufen der Hilfefunktion <strong>und</strong> zum Schließen des Programms zur Verfügung,<br />
welche mit einer Kreisbewegung bzw. einer Wischgeste durchgeführt aufgerufen<br />
werden. Zusätzlich wird das Stroke-Objekt der Action übergeben. Die Klasse<br />
AddDiagramAction enthält dabei drei Hilfsmethoden, Width, Height <strong>und</strong> Position.<br />
Die Methode Width ermittelt durch den übergebenen Stroke die Breite des Diagramms.<br />
Dafür werden der kleinste <strong>und</strong> der größte X-Wert aus dem Stroke ermittelt. Analog<br />
dazu verfährt die Methode Height, jedoch hier mit den Y-Werten. Um die Breite <strong>und</strong><br />
Höhe zu berechnen wird das Minimum jeweils vom Maximum subtrahiert. Die Methode<br />
Position ermittelt die Position des Diagramms. Hierfür werden jeweils die minimalen<br />
Werte von den X- <strong>und</strong> Y-Werten ermittelt. Nachdem diese Werte berechnet werden,<br />
wird ein neues Diagramm erzeugt, die Größe dieses Diagramms gesetzt <strong>und</strong> mit einer<br />
TranslateTransform positioniert. Da die Diagramme aufeinander liegen können, gibt<br />
es das LastZOrder-Property, welches eine statische Variable ist. Es gibt an, welchen<br />
Z-Index das oben liegende Diagramm hat. Soll ein Diagramm in den Vordergr<strong>und</strong><br />
geholt werden, so wird dieser Index inkrementiert <strong>und</strong> auf das Diagramm wird das<br />
AttachedProperty Canvas.ZIndex mit diesem Wert gesetzt. Ein Diagramm kann<br />
durch Berühren desselben in den Vordergr<strong>und</strong> geholt werden.