Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03484.jsonl.gz/1510

Das allgemeine Vorgehen beim Zeichnen komplexer Grafikelemente über Pfade ist folgendes:
Die folgenden Funktionen können verwendet werden, um die Geometrie eines Pfades zu definieren:
|OpenPath()||Öffnet den Pfad (für das Zeichnen von komplexen Flächen)|
|ClosePath()||Verbindet Anfangs- und Endpunkt des Pfades|
|ClearPath()||Schliesst den Pfad und löscht ihn|
|Path()||Zeichnet den Pfad (Fläche und/oder Konturen)|
|Clip()||Erzeugt einen belibigen Clipping-Bereich aus dem aktuellen Pfad|
JsGraph.OpenPath( )
Löscht den aktuellen Pfad und öffnet einen neuen. Alle folgenden Aufrufe von Funktionen zum Erzeugen von Linien-Elementen speichern ihre Linien im Pfad, statt sie auf den Bildschirm zu zeichnen. Auf diese Weise können beliebig viele verschiedene Linien- oder Kreis-Elemente zu einer oder mehreren Konturen zusammengesetzt werden und mit dem Aufruf von Path() gezeichnet und/oder gefüllt werden.
JsGraph.ClosePath( )
Verbindet den letzten Punkt des aktuellen Pfades mit dem letzten Punkt des Pfades, welcher mit MoveTo() erzeugt worden ist, oder mit dem ersten Punkt des Pfades, wenn kein solcher Punkt existiert. Der Pfad bleibt offen, um weitere Elemente an den Pfad zu hängen (z.B. Löcher in einer Fläche).
Wird ein Pfad gefüllt siehe Funktion Path(), wird er automatisch geschlossen. Das heisst, es wird implizit eine Verbindung zwischen dem letzten Punkt und dem letzten mit MoveTo() erzeugten Punkt erstellt. Wenn auch die Kontur geschlossen gezeichnet werden soll, muss der Pfad jedoch explizit mit ClosePath oder mit dem Mode-Flag 4 der Funktion Path() geschlossen werden, wenn Anfangs- und Endpunkt nicht identisch sind.
Die Funktion MoveTo() wird bei Zeichenfunktionen wie Line(), Polygon(), Circle(), Arc() usw. implizit für den ersten Punkt des Elementes gerufen, sofern nicht das Flag für An Pfad anhängen gesetzt wird. Bei den Grafik-Elementen kann zudem mit einem Flag gesteuert werden, ob diese geschlossen werden sollen, indem eine Linie vom ersten Punkt des Elementes zum letzten Punkt des Elementes gezeichnet werden soll. Achtung, das ist nicht dasselbe, wie der Aufruf von ClosePath! Im ersten Fall wird nur die Kontur des Elementes geschlossen, im letzten Fall wird eine Kontur bestehend aus mehreren Elementen (von MoveTo bis letztem Punk) geschlossen.
JsGraph.ClearPath( )
Schliesst und löscht den Pfad. Alle Aufrufe von Zeichenfunktionen bewirken nun wieder ein direktes Zeichnen des Elementes, anstatt es im Pfad zu speichern.
JsGraph.Path( Mode, Clear )
|Mode||Beschreibung|
|1||Pfad-Kontur zeichnen|
|2||Pfad-Kontur füllen|
|4||Kontur Anfangs- und Endpunkt verbinden|
Zeichnet alle seit dem Aufruf von OpenPath() im Pfad gespeicherten Linienelemente und/oder füllt die so definierte Kontur mit den aktuellen Linien- und Flächen-Attributen.
Die Bits in obiger Tabelle können einfach durch Addition zu der Bitmaske von Mode zusammen gesetzt werden. Wenn also zum Beispiel der Pfad geschlossen und gefüllt werden soll und gleichzeitig auch die Kontur gezeichnet werden soll, so muss Mode = 1 + 2 + 4 gesetzt werden.
Wenn Bit 4 von Mode gesetzt ist, wird intern ClosePath() gerufen. Dadurch wird der letzte Punkt des Pfades mit dem letzten mit MoveTo() erzeugten Punkt verbunden. Achtung: MoveTo() wird auch bei Grafik-Elementen wie Polygonen, Kreisen usw. gerufen, wenn dort das Flag für An den Pfad anhängen nicht gesetzt ist!
Das Argument Clear ist nützlich, wenn zum Beispiel erst die Fläche des Pfades transparent gezeichnet werden soll, die Kontur aber undurchsichtig sein soll. In diesem Fall muss der Pfad nicht zweimal definiert werden, sondern es kann derselbe Pfad wiederverwendet werden:
// Pfad definieren jsg.SetAlpha( 0.5 ); jsg.Path( 2, false ); // transparente Fläche jsg.SetAlpha( 1 ); jsg.Path( 5 ); // Kontur schliessen und undurchsichtig zeichnen
JsGraph.Clip( Clear )
Mit der Clip Funktion kann ein beliebig geformter Clipping-Bereich definiert werden, indem ein entsprechender Pfad definiert wird und dann Clip aufgerufen wird. Der Clipping-Bereich kann mit der Funktion SetClipping() wieder auf den Viewport- oder Canvas-Bereich zurückgesetzt werden.