Signatur
Beschreibung
ps_begin_pattern() leitet die Definition eines neuen Füll- oder Streichmusters (Pattern) in einem mit ps_new() erzeugten PostScript-Dokument ein. Muster ermöglichen es, Flächen oder Linien mit einem sich wiederholenden grafischen Motiv zu füllen, anstatt eine einfache Farbe zu verwenden.
Das Muster wird durch eine Kachelzelle definiert, deren Abmessungen über width und height angegeben werden. Die Parameter xstep und ystep legen den Abstand zwischen den Kacheln in x- bzw. y-Richtung fest. Sind xstep und ystep gleich width und height, liegen die Kacheln lückenlos aneinander.
Nach dem Aufruf können beliebige Zeichenoperationen (z. B. ps_moveto(), ps_lineto(), ps_fill()) innerhalb des Musters ausgeführt werden. Die Musterdefinition muss mit ps_end_pattern() abgeschlossen werden. Anschließend kann das Muster über ps_setcolor() als Füllfarbe aktiviert werden.
Der Parameter painttype bestimmt, ob das Muster selbst Farbe trägt (colored pattern, Wert 1) oder ob die Farbe beim Einsetzen des Musters gesetzt wird (uncolored pattern, Wert 2).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Eine gültige PostScript-Ressource, die zuvor mit ps_new() erzeugt wurde. |
|
| $width Pflicht | float | Breite der Musterkachel in Punkten (Points). | |
| $height Pflicht | float | Höhe der Musterkachel in Punkten (Points). | |
| $xstep Pflicht | float | Horizontaler Abstand zwischen zwei aufeinanderfolgenden Kacheln in Punkten. Entspricht er width, liegen die Kacheln nahtlos nebeneinander. |
|
| $ystep Pflicht | float | Vertikaler Abstand zwischen zwei aufeinanderfolgenden Kacheln in Punkten. Entspricht er height, liegen die Kacheln nahtlos übereinander. |
|
| $painttype Pflicht | int | Gibt an, ob das Muster eigene Farbe besitzt: 1 für ein farbiges Muster (colored), 2 für ein ungefärbtes Muster (uncolored), bei dem die Farbe beim Verwenden gesetzt wird. |
Rückgabewert
ps_setcolor() verwendet werden kann. Im Fehlerfall wird 0 zurückgegeben.Beispiele
Einfaches Schraffurmuster erzeugen und auf eine Fläche anwenden
<?php
$ps = ps_new();
ps_open_file($ps, 'muster.ps');
ps_begin_page($ps, 596, 842);
// Musterdefinition beginnen: 10x10 Punkte große Kachel, nahtlos
$patternId = ps_begin_pattern($ps, 10, 10, 10, 10, 1);
// Diagonale Linie als Mustermotiv zeichnen
ps_setcolor($ps, 'stroke', 'rgb', 0.0, 0.0, 1.0, 0.0); // Blaue Linie
ps_setlinewidth($ps, 0.5);
ps_moveto($ps, 0, 0);
ps_lineto($ps, 10, 10);
ps_stroke($ps);
ps_end_pattern($ps);
// Muster als Füllfarbe setzen
ps_setcolor($ps, 'fill', 'pattern', $patternId, 0, 0, 0);
// Rechteck mit Muster füllen
ps_rect($ps, 50, 300, 200, 150);
ps_fill($ps);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Datei mit Muster wurde erzeugt.';
?>
Ungefärbtes Muster (painttype=2) mit externer Farbgebung
<?php
$ps = ps_new();
ps_open_file($ps, 'ungefaerbt.ps');
ps_begin_page($ps, 596, 842);
// Ungefärbtes Muster: Farbe wird erst beim Einsetzen bestimmt
$patternId = ps_begin_pattern($ps, 15, 15, 15, 15, 2);
// Kreuz als Mustermotiv (ohne eigene Farbe)
ps_moveto($ps, 7, 0);
ps_lineto($ps, 7, 15);
ps_moveto($ps, 0, 7);
ps_lineto($ps, 15, 7);
ps_stroke($ps);
ps_end_pattern($ps);
// Muster rot einfärben
ps_setcolor($ps, 'fill', 'pattern', $patternId, 1.0, 0.0, 0.0);
ps_rect($ps, 100, 400, 300, 200);
ps_fill($ps);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'Ungefärbtes Muster erfolgreich eingesetzt.';
?>
// Wichtig · Fallstricke
Erweiterung erforderlich: ps_begin_pattern() gehört zur ps-Erweiterung (PECL ps), die nicht standardmäßig in PHP enthalten ist und separat installiert werden muss.
Die Zeichenoperationen innerhalb der Musterdefinition (zwischen ps_begin_pattern() und ps_end_pattern()) dürfen keine Seitenoperationen (ps_begin_page() / ps_end_page()) enthalten.
Werden xstep oder ystep kleiner als width bzw. height gewählt, überlappen sich die Kacheln. Größere Werte erzeugen Lücken zwischen den Kacheln.