Start · Sprachen · PHP · Referenz · ps_shfill

ps_shfill

Funktion

Füllt eine Fläche im aktuellen Pfad mit einer zuvor definierten Schattierung (Gradient).

Kategorie: misc

Signatur

ps_shfill(resource $psdoc, int $shading): bool

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

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