Signatur
Beschreibung
UI\Draw\Stroke ist Teil der UI-Erweiterung (ui/libui) für PHP und kapselt alle Parameter, die bestimmen, wie ein Pfad auf einer Zeichenfläche als Strich gerendert wird. Dazu gehören Linienbreite, Linienendkappen (Cap), Verbindungsstil (Join) sowie der Grenzwert für spitze Verbindungen (Miter Limit).
Ein Stroke-Objekt wird in der Regel zusammen mit UI\Draw\Brush an die Methode UI\Draw\Context::stroke() übergeben, um einen definierten Pfad auf den Kontext zu zeichnen. Dadurch lassen sich z. B. gestrichelte Linien, abgerundete Ecken oder verschiedene Verbindungsstile realisieren.
Die Klasse bietet Getter- und Setter-Methoden für alle Konfigurationswerte, sodass ein einmal erstelltes Objekt wiederverwendet und angepasst werden kann, ohne jedes Mal ein neues Objekt anlegen zu müssen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $cap | int | UI\Draw\Line\Cap::Flat | Legt den Stil der Linienendkappen fest. Mögliche Werte sind Konstanten aus UI\Draw\Line\Cap (z. B. Flat, Round, Square). |
| $join | int | UI\Draw\Line\Join::Miter | Legt den Verbindungsstil zwischen Liniensegmenten fest. Mögliche Werte sind Konstanten aus UI\Draw\Line\Join (z. B. Miter, Round, Bevel). |
| $thickness | float | 1.0 | Gibt die Linienbreite in Pixeln an. |
| $miterLimit | float | 10.0 | Legt den Grenzwert für spitze Verbindungen (Miter Limit) fest. Überschreitet der Winkel diesen Wert, wird der Miter-Stil automatisch zu Bevel gewechselt. |
Beispiele
Einfachen Strich auf einem UI-Kontext zeichnen
<?php
use UI\Draw\Stroke;
use UI\Draw\Brush;
use UI\Draw\Path;
use UI\Draw\Line\Cap;
use UI\Draw\Line\Join;
// Stroke-Konfiguration: runde Endkappen, runde Verbindungen, 3 Pixel breit
$stroke = new Stroke(Cap::Round, Join::Round, 3.0);
// Brush in Rot
$brush = new Brush(Brush::Solid, new UI\Draw\Color(1.0, 0.0, 0.0, 1.0));
// Pfad definieren
$path = new Path(Path::Winding);
$path->newFigure(new UI\Point(10, 10));
$path->lineTo(new UI\Point(200, 10));
$path->lineTo(new UI\Point(200, 100));
$path->end();
// Im Handler der Area:
// $context->stroke($path, $brush, $stroke);
echo "Stroke-Objekt erstellt mit Dicke: " . $stroke->getThickness();
Stroke-Eigenschaften nachträglich ändern
<?php
use UI\Draw\Stroke;
use UI\Draw\Line\Cap;
use UI\Draw\Line\Join;
$stroke = new Stroke();
// Standard-Werte ausgeben
echo "Cap: " . $stroke->getCap() . PHP_EOL;
echo "Join: " . $stroke->getJoin() . PHP_EOL;
echo "Thickness: " . $stroke->getThickness() . PHP_EOL;
echo "MiterLimit: " . $stroke->getMiterLimit() . PHP_EOL;
// Anpassungen
$stroke->setCap(Cap::Square);
$stroke->setJoin(Join::Bevel);
$stroke->setThickness(2.5);
$stroke->setMiterLimit(5.0);
echo "Neue Thickness: " . $stroke->getThickness() . PHP_EOL;
// Wichtig · Fallstricke
Hinweis zur Verfügbarkeit: Die UI-Erweiterung ist keine Standard-PHP-Erweiterung und muss separat installiert werden (z. B. via PECL: pecl install ui). Sie basiert auf der nativen libui-Bibliothek, die plattformübergreifende GUI-Funktionen bereitstellt.
Die genauen Konstruktorargumente und Methodennamen können je nach Version der UI-Erweiterung leicht variieren. Es empfiehlt sich, die jeweils installierte Version zu prüfen.
Ein Stroke-Objekt ohne angepassten Miter Limit kann bei sehr spitzen Winkeln unerwartete Darstellungen erzeugen, da der Standard-Wert von 10.0 erst bei extremen Winkeln greift.