Signatur
Beschreibung
ps_setdash() definiert das Aussehen von gestrichelten Linien in einem PostScript-Dokument, das mit der PS-Erweiterung erstellt wird. Mit den Parametern on und off lässt sich das Verhältnis von gezeichnetem Strich zur Lücke zwischen den Strichen festlegen.
Die Funktion muss vor dem Zeichnen einer Linie mit Funktionen wie ps_lineto() oder ps_stroke() aufgerufen werden, damit das Strichmuster wirksam wird. Die Längenangaben beziehen sich auf die aktuelle Maßeinheit des Dokuments (standardmäßig Punkte).
Mit gleichen Werten für on und off entsteht ein regelmäßiges Strichmuster. Werden beide Parameter auf 0 gesetzt, wird die Linie wieder als durchgezogene Linie gezeichnet. Dies ist nützlich, um nach einem gestrichelten Abschnitt zum Standardstil zurückzukehren.
Typische Anwendungsfälle sind das Zeichnen von Trenn- oder Hilfslinien, Rahmen mit gestricheltem Stil sowie grafische Hervorhebungen in PDF- oder PS-Ausgaben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Die Ressource des PostScript-Dokuments, wie sie von ps_new() zurückgegeben wird. |
|
| $on Pflicht | float | Länge des gezeichneten Strichanteils in der aktuellen Maßeinheit des Dokuments. Ein Wert von 0 zusammen mit off = 0 deaktiviert das Strichmuster. |
|
| $off Pflicht | float | Länge der Lücke zwischen zwei Strichen in der aktuellen Maßeinheit des Dokuments. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler, z. B. wenn die übergebene Ressource ungültig ist.Beispiele
Einfache gestrichelte Linie zeichnen
<?php
$ps = ps_new();
if (!$ps) {
die('Konnte PS-Dokument nicht erstellen');
}
ps_open_file($ps, 'ausgabe.ps');
ps_begin_page($ps, 596, 842);
// Gestricheltes Muster: 10 Punkte Strich, 5 Punkte Lücke
ps_setdash($ps, 10.0, 5.0);
ps_setlinewidth($ps, 1.5);
ps_moveto($ps, 50, 700);
ps_lineto($ps, 500, 700);
ps_stroke($ps);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Datei mit gestrichelter Linie erstellt.';
?>
Gestrichelte Linie und anschließend zurück zu durchgezogener Linie
<?php
$ps = ps_new();
ps_open_file($ps, 'linien.ps');
ps_begin_page($ps, 596, 842);
// Gestricheltes Muster setzen
ps_setdash($ps, 8.0, 4.0);
ps_moveto($ps, 50, 600);
ps_lineto($ps, 500, 600);
ps_stroke($ps);
// Zurück zur durchgezogenen Linie
ps_setdash($ps, 0.0, 0.0);
ps_moveto($ps, 50, 550);
ps_lineto($ps, 500, 550);
ps_stroke($ps);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'Beide Linienarten wurden gezeichnet.';
?>
// Wichtig · Fallstricke
Erweiterung erforderlich: ps_setdash() gehört zur ps-PECL-Erweiterung (pslib), die standardmäßig nicht in PHP enthalten ist und separat installiert werden muss. Ohne diese Erweiterung steht die Funktion nicht zur Verfügung.
Das Strichmuster gilt global für alle nachfolgend gezeichneten Linien im aktuellen Grafikzustand. Soll das Muster nur für einen bestimmten Bereich gelten, sollte der Grafikzustand mit ps_save() und ps_restore() gesichert bzw. wiederhergestellt werden.