Signatur
Beschreibung
ps_shfill() ist Teil der PHP-PostScript-Erweiterung (ps) und füllt den aktuell definierten Zeichenpfad mit einer Schattierung (engl. shading), die zuvor mit ps_shading() erstellt wurde. Damit lassen sich Flächen mit Farbverläufen (Gradienten) versehen, etwa lineare oder radiale Übergänge.
Vor dem Aufruf muss ein Pfad definiert sein (z. B. mit ps_rect(), ps_moveto(), ps_lineto() etc.), und die Schattierung muss zuvor via ps_shading() erzeugt und anschließend mit ps_shading_pattern() in ein Muster konvertiert worden sein. ps_shfill() füllt dann die durch den Pfad begrenzte Fläche direkt mit der Schattierung, ohne ein Muster-Objekt zu benötigen.
Diese Funktion eignet sich besonders für die Erzeugung von PostScript-Dokumenten mit visuell ansprechenden Hintergründen, Schaltflächen oder grafischen Elementen, bei denen einfarbige Füllungen nicht ausreichen.
Hinweis: Die ps-Erweiterung ist in neueren PHP-Versionen nicht mehr gebündelt und muss separat installiert werden (PECL). Sie erzeugt PostScript-Ausgaben, keine PDF-Dokumente.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $psdoc Pflicht | resource | Die Ressource des PostScript-Dokuments, die von ps_new() zurückgegeben wurde. |
|
| $shading Pflicht | int | Die ID der Schattierung, die zuvor mit ps_shading() erstellt wurde. |
Rückgabewert
true bei Erfolg zurück, false bei einem Fehler (z. B. ungültige Schattierungs-ID oder kein aktiver Pfad).Beispiele
Rechteck mit linearem Farbverlauf füllen
<?php
// PostScript-Dokument erstellen
$ps = ps_new();
ps_open_file($ps, 'gradient.ps');
ps_begin_page($ps, 596, 842);
// Linearen Farbverlauf von Blau nach Rot definieren
$shading = ps_shading(
$ps,
'axial', // Typ: axial (linear)
0, 0, // Startpunkt
200, 0, // Endpunkt
0, 0, 1, // Startfarbe: Blau (RGB)
1, 0, 0, // Endfarbe: Rot (RGB)
'rgb', // Farbraum
0, 1 // Ausdehnung an beiden Enden
);
// Pfad definieren: Rechteck bei (50, 300), 200x100 Punkte
ps_rect($ps, 50, 300, 200, 100);
// Fläche mit der Schattierung füllen
ps_shfill($ps, $shading);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Datei mit Farbverlauf wurde erstellt.';
?>
Radialen Farbverlauf in einem Kreis verwenden
<?php
$ps = ps_new();
ps_open_file($ps, 'radial_gradient.ps');
ps_begin_page($ps, 596, 842);
// Radialen Farbverlauf von Weiß (Mitte) nach Schwarz (Rand) definieren
$shading = ps_shading(
$ps,
'radial', // Typ: radial
150, 500, // Mittelpunkt Innenkreis
0, // Radius Innenkreis
150, 500, // Mittelpunkt Außenkreis
100, // Radius Außenkreis
1, 1, 1, // Startfarbe: Weiß
0, 0, 0, // Endfarbe: Schwarz
'rgb',
0, 1
);
// Kreisförmigen Pfad als Clipping-Bereich setzen
ps_arc($ps, 150, 500, 100, 0, 360);
ps_clip($ps);
// Hintergrundrechteck mit Schattierung füllen
ps_rect($ps, 50, 400, 200, 200);
ps_shfill($ps, $shading);
ps_end_page($ps);
ps_close($ps);
ps_delete($ps);
echo 'PostScript-Datei mit radialem Verlauf erstellt.';
?>
// Wichtig · Fallstricke
Verfügbarkeit: Die ps-Erweiterung ist nicht Teil des PHP-Kerns und muss über PECL installiert werden. In aktuellen PHP-Versionen (ab PHP 8.x) ist die Verfügbarkeit eingeschränkt — prüfen Sie die Kompatibilität Ihrer PHP-Version.
Pfad-Zustand: Nach dem Aufruf von ps_shfill() wird der aktuelle Pfad gelöscht. Soll der Pfad erhalten bleiben (z. B. für eine anschließende Rahmenzeichnung), muss er erneut definiert werden.
Abgrenzung zu ps_shading_pattern(): Im Gegensatz zum Workflow über ps_shading_pattern() und ps_setcolor() + ps_fill() füllt ps_shfill() direkt mit der Schattierung, ohne ein wiederverwendbares Muster-Objekt anzulegen.