Signatur
Beschreibung
UI\Draw\Brush\Gradient ist die abstrakte Basisklasse für alle Farbverlauf-Pinsel in der PHP-UI-Erweiterung (ui). Sie kann nicht direkt instanziiert werden, sondern dient als gemeinsame Grundlage für die konkreten Unterklassen UI\Draw\Brush\LinearGradient und UI\Draw\Brush\RadialGradient.
Farbverlauf-Pinsel werden verwendet, um Formen, Pfade oder andere UI-Elemente mit einem fließenden Übergang zwischen mehreren Farben zu füllen. Dabei werden sogenannte Stops definiert – Positionen entlang des Verlaufs (als Wert zwischen 0.0 und 1.0), denen je eine Farbe zugeordnet ist.
Die Klasse stellt Methoden bereit, um Farbstopps hinzuzufügen und zu verwalten. Über die Methode addStop() lassen sich Positionen und Farben (als UI\Draw\Color-Objekte) zum Verlauf hinzufügen. Der konkrete Verlaufstyp – linear oder radial – wird durch die jeweilige Unterklasse festgelegt.
Diese Klasse ist Teil der experimentellen PHP-Erweiterung ui, die auf libui basiert und plattformübergreifende Desktop-GUIs mit PHP ermöglicht. Da es sich um eine abstrakte Klasse handelt, sollte immer eine der konkreten Unterklassen verwendet werden.
Beispiele
Linearen Farbverlauf-Pinsel erstellen und verwenden
<?php
use UI\Draw\Brush\LinearGradient;
use UI\Draw\Color;
use UI\Point;
// LinearGradient erbt von Gradient
$gradient = new LinearGradient(
new Point(0, 0),
new Point(100, 0)
);
// Farbstopps hinzufügen: Position (0.0–1.0) und Farbe
$gradient->addStop(0.0, new Color(1.0, 0.0, 0.0, 1.0)); // Rot am Anfang
$gradient->addStop(1.0, new Color(0.0, 0.0, 1.0, 1.0)); // Blau am Ende
// Den Gradient-Pinsel kann man nun zum Zeichnen einer Fläche verwenden
// z. B. in einem UI\Draw\Path-Füllaufruf innerhalb eines Draw-Handlers
echo "Linearer Verlauf mit " . count($gradient->getStops()) . " Stops erstellt.";
Radialen Farbverlauf-Pinsel erstellen
<?php
use UI\Draw\Brush\RadialGradient;
use UI\Draw\Color;
use UI\Point;
// RadialGradient erbt ebenfalls von Gradient
$radial = new RadialGradient(
new Point(50, 50), // Mittelpunkt (Startkreis)
new Point(50, 50), // Mittelpunkt (Endkreis)
50.0 // Radius
);
// Hellen Mittelpunkt und dunklen Rand definieren
$radial->addStop(0.0, new Color(1.0, 1.0, 1.0, 1.0)); // Weiß im Zentrum
$radial->addStop(0.5, new Color(0.5, 0.5, 0.5, 1.0)); // Grau in der Mitte
$radial->addStop(1.0, new Color(0.0, 0.0, 0.0, 1.0)); // Schwarz am Rand
echo "Radialer Verlauf erstellt.";
// Wichtig · Fallstricke
Experimentelle Erweiterung: Die ui-Erweiterung gilt als experimentell und ist nicht im Standard-PHP enthalten. Sie muss separat installiert werden (z. B. via PECL: pecl install ui). Die API kann sich zwischen Versionen ändern.
Abstrakte Klasse: UI\Draw\Brush\Gradient kann nicht direkt mit new instanziiert werden. Immer eine der konkreten Unterklassen (LinearGradient oder RadialGradient) verwenden.
Stop-Positionen: Die Positions-Werte für addStop() müssen im Bereich von 0.0 bis 1.0 liegen. Werte außerhalb dieses Bereichs führen möglicherweise zu undefiniertem Verhalten.