Start · Sprachen · PHP · Referenz · UI\Draw\Stroke

UI\Draw\Stroke

Klasse

Enthält die Konfiguration für den Pen zum Zeichnen eines Strichs (Linienstil, -breite, Verbindungen und Endkappen).

seit PHP 0.9.9 Kategorie: misc

Signatur

class UI\Draw\Stroke

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-Objekt erstellt mit Dicke: 3

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;
Cap: 0 Join: 0 Thickness: 1 MiterLimit: 10 Neue Thickness: 2.5

// 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.