Start · Sprachen · PHP · Referenz · ps_closepath

ps_closepath

Funktion

Schließt den aktuellen Pfad im PostScript-Dokument, indem eine gerade Linie vom aktuellen Punkt zum Startpunkt des Pfades gezogen wird.

Kategorie: misc

Signatur

ps_closepath(resource $psdoc): bool

Beschreibung

ps_closepath() ist Teil der PS-Erweiterung (pslib) für PHP und schließt den aktuell geöffneten Pfad im PostScript-Dokument. Dabei wird eine gerade Linie vom zuletzt gesetzten Punkt zurück zum Anfangspunkt des Pfades gezeichnet, sodass ein geschlossenes geometrisches Objekt entsteht.

Diese Funktion entspricht dem PostScript-Operator closepath. Sie wird typischerweise nach dem Zeichnen von Linien oder Kurven eingesetzt, wenn sichergestellt werden soll, dass eine Form vollständig geschlossen ist – z. B. bei Dreiecken, Polygonen oder anderen Figuren, bei denen Anfangs- und Endpunkt übereinstimmen sollen.

Nach dem Schließen des Pfades kann dieser mit ps_stroke() gezeichnet, mit ps_fill() gefüllt oder mit ps_fill_stroke() gleichzeitig gefüllt und gezeichnet werden. Ohne ps_closepath() würde der Pfad offen bleiben, und beim Füllen oder Zeichnen könnte die Form unvollständig erscheinen.

Die Funktion ist besonders dann sinnvoll, wenn man geometrisch korrekte, lückenlose Konturen benötigt, da ein manuell an den Startpunkt zurückgeführter Linienzug am Verbindungspunkt sichtbare Lücken oder unschöne Gelenke (Linejoin-Artefakte) erzeugen kann.

Parameter

Name Typ Default Beschreibung
$psdoc Pflicht resource Die Ressource des PostScript-Dokuments, die zuvor mit ps_new() erzeugt und mit ps_open_file() geöffnet wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true bei Erfolg zurück, false im Fehlerfall.

Beispiele

Geschlossenes Dreieck zeichnen

<?php
$ps = ps_new();
ps_open_file($ps, 'dreieck.ps');
ps_begin_page($ps, 596, 842);

// Pfad für ein Dreieck definieren
ps_moveto($ps, 100, 100);
ps_lineto($ps, 200, 100);
ps_lineto($ps, 150, 200);

// Pfad schließen: verbindet (150,200) automatisch mit (100,100)
ps_closepath($ps);

// Linienstärke und Farbe setzen, dann zeichnen
ps_setlinewidth($ps, 2.0);
ps_setcolor($ps, 'stroke', 'rgb', 0.0, 0.0, 1.0, 0.0);
ps_stroke($ps);

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'Dreieck erfolgreich erstellt.';
?>
Dreieck erfolgreich erstellt.

Gefülltes geschlossenes Polygon

<?php
$ps = ps_new();
ps_open_file($ps, 'polygon.ps');
ps_begin_page($ps, 596, 842);

// Fünfeck-Pfad
ps_moveto($ps, 150, 300);
ps_lineto($ps, 250, 300);
ps_lineto($ps, 280, 200);
ps_lineto($ps, 200, 150);
ps_lineto($ps, 120, 200);

// Pfad schließen
ps_closepath($ps);

// Füllfarbe setzen und füllen + Kontur zeichnen
ps_setcolor($ps, 'fill', 'rgb', 1.0, 0.8, 0.0, 0.0);
ps_setcolor($ps, 'stroke', 'rgb', 0.0, 0.0, 0.0, 0.0);
ps_setlinewidth($ps, 1.5);
ps_fill_stroke($ps);

ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'Polygon erfolgreich erstellt.';
?>
Polygon erfolgreich erstellt.

// Wichtig · Fallstricke

Voraussetzung: Die ps-Erweiterung (pslib) muss in PHP installiert und aktiviert sein. Sie ist nicht Teil des PHP-Kern-Pakets und wird in modernen Umgebungen selten standardmäßig mitgeliefert.

Wenn kein Pfad geöffnet ist (d. h. kein vorheriges ps_moveto() aufgerufen wurde), kann ps_closepath() zu einem Fehler oder unerwartetem Verhalten führen.

Die Funktion zeichnet die schließende Linie nicht sofort sichtbar – erst durch ps_stroke(), ps_fill() oder ps_fill_stroke() wird der Pfad tatsächlich auf der Seite ausgegeben.