Signatur
Beschreibung
UI\Draw\Brush\RadialGradient ist Teil der PHP-UI-Erweiterung (ext-ui) und ermöglicht das Zeichnen von radialen Farbverläufen auf Zeichenflächen. Ein radialer Farbverlauf strahlt von einem Mittelpunkt (Startkreis) ausgehend kreisförmig nach außen bis zu einem definierten Endkreis aus, wobei entlang des Radiusverlaufs beliebig viele Farb-Stopps gesetzt werden können.
Die Klasse erbt von UI\Draw\Brush und kann überall dort verwendet werden, wo ein UI\Draw\Brush erwartet wird – etwa beim Füllen oder Umranden von Pfad-Objekten innerhalb eines UI\Draw-Kontexts. Über die geerbte Methode addStop() werden Farb-Stopps (Position zwischen 0.0 und 1.0 sowie eine UI\Draw\Color) entlang des Farbverlaufs hinzugefügt.
Radiale Farbverläufe eignen sich besonders für Hervorhebungseffekte, Schein- oder Beleuchtungssimulationen, Schatten und dekorative Hintergründe in grafischen PHP-Desktopanwendungen, die auf libui basieren.
Hinweis: Diese Klasse ist Teil der experimentellen php-ui-Erweiterung, die nicht standardmäßig in PHP enthalten ist und separat installiert werden muss. Die API gilt als instabil und kann sich in zukünftigen Versionen ändern.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $start Pflicht | UI\Point | Der Mittelpunkt des inneren (Start-)Kreises des radialen Farbverlaufs als UI\Point-Objekt mit X- und Y-Koordinate. |
|
| $outer Pflicht | UI\Point | Der Mittelpunkt des äußeren (End-)Kreises des radialen Farbverlaufs als UI\Point-Objekt. |
|
| $radius Pflicht | float | Der Radius des äußeren Kreises in Pixeln. Bestimmt, wie weit der Farbverlauf nach außen reicht. |
Beispiele
Radialen Farbverlauf-Pinsel erstellen und auf einen Kreis-Pfad anwenden
<?php
use UI\Draw\Brush\RadialGradient;
use UI\Draw\Color;
use UI\Draw\Path;
use UI\Point;
use UI\Size;
// Radialen Farbverlauf erzeugen:
// Mittelpunkt des inneren Kreises bei (150, 150), Außenkreis ebenfalls bei (150, 150), Radius 100 Pixel
$brush = new RadialGradient(
new Point(150, 150),
new Point(150, 150),
100.0
);
// Farb-Stopps hinzufügen: innen Weiß, außen Blau
$brush->addStop(0.0, new Color(1.0, 1.0, 1.0, 1.0)); // weiß (innen)
$brush->addStop(1.0, new Color(0.0, 0.2, 0.8, 1.0)); // blau (außen)
// Pfad (Ellipse) erstellen und mit dem Pinsel füllen
$path = new Path(Path::Winding);
$path->addRectangle(new Point(50, 50), new Size(200, 200));
$path->end();
// $draw ist ein UI\Draw-Kontext, der z. B. im onDraw-Callback bereitsteht
// $draw->fill($path, $brush);
Dezentrierten radialen Farbverlauf für Lichteffekt simulieren
<?php
use UI\Draw\Brush\RadialGradient;
use UI\Draw\Color;
use UI\Point;
// Innerer Startpunkt leicht versetzt (Lichtquelle oben links)
$brush = new RadialGradient(
new Point(120, 110), // leicht dezentrierter Startpunkt
new Point(150, 150), // Mittelpunkt des äußeren Kreises
120.0
);
// Drei Farb-Stopps für einen weicheren Übergang
$brush->addStop(0.0, new Color(1.0, 1.0, 0.8, 1.0)); // helles Gelb-Weiß (innen)
$brush->addStop(0.5, new Color(1.0, 0.6, 0.0, 0.8)); // Orange (Mitte)
$brush->addStop(1.0, new Color(0.6, 0.0, 0.0, 0.0)); // Dunkelrot, transparent (außen)
// Brush kann nun zum Zeichnen eines leuchtenden Effekts verwendet werden
// $draw->fill($path, $brush);
// Wichtig · Fallstricke
Experimentelle Erweiterung: UI\Draw\Brush\RadialGradient ist Teil der php-ui-Erweiterung (PECL), die nicht zum PHP-Kern gehört. Vor der Verwendung muss die Erweiterung kompiliert und aktiviert werden (extension=ui in der php.ini). Die API ist als experimentell eingestuft und kann sich ohne Vorankündigung ändern.
Die Farb-Stopps werden über die geerbte Methode addStop(float $position, UI\Draw\Color $color) gesetzt. Die Position muss zwischen 0.0 (Innenmitte) und 1.0 (Außenrand) liegen. Werden keine Stopps gesetzt, ist das Verhalten undefiniert.
Für lineare Farbverläufe steht alternativ UI\Draw\Brush\LinearGradient zur Verfügung.