Start · Sprachen · PHP · Referenz · UI\Draw\Brush\RadialGradient

UI\Draw\Brush\RadialGradient

Klasse

Repräsentiert einen radialen Farbverlauf-Pinsel zum Zeichnen von kreisförmig verlaufenden Farbübergängen auf <code>UI\Draw\Path</code>-Objekten.

seit PHP 0.9.9 Kategorie: misc

Signatur

class UI\Draw\Brush\RadialGradient extends UI\Draw\Brush

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.