Start · Sprachen · PHP · Referenz · ps_setdash

ps_setdash

Funktion

Setzt das Muster einer gestrichelten Linie in einem PostScript-Dokument durch Angabe von Strich- und Lückenlänge.

Kategorie: misc

Signatur

ps_setdash(resource $psdoc, float $on, float $off): bool

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

Typ
bool
Beschreibung
Gibt 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.';
?>
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.';
?>
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.