Signatur
Beschreibung
Die Klasse UI\Controls\ColorButton ist Teil der PHP-UI-Erweiterung (php-ui bzw. libui) und stellt ein nativer Widget bereit, das als einfache Schaltfläche in einem Fenster erscheint. Klickt der Nutzer darauf, öffnet sich ein betriebssystemnativer Farbwähler-Dialog (Color Picker), in dem eine Farbe ausgewählt werden kann.
Der ausgewählte Farbwert wird intern als UI\Draw\Color-Objekt gespeichert und kann jederzeit über die Methode getColor() abgerufen oder mit setColor() programmatisch gesetzt werden. Über einen registrierten Callback (onChange) kann auf Farbänderungen durch den Nutzer reagiert werden.
Der ColorButton eignet sich hervorragend für Desktop-Anwendungen, bei denen der Nutzer eine Farbe auswählen soll, etwa für Textfarben, Hintergründe oder Diagrammelemente. Da er auf die nativen Dialoge des jeweiligen Betriebssystems zurückgreift, fügt er sich optisch nahtlos in die Plattformoberfläche ein.
Um ihn zu verwenden, muss die UI-Erweiterung installiert und geladen sein (ext-ui). Er wird wie andere Controls in einem UI\Window oder Layout-Container platziert.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $— | Der Konstruktor von UI\Controls\ColorButton erwartet keine Parameter. Das Widget wird ohne Argumente instanziiert. |
Beispiele
Einfacher ColorButton in einem Fenster
<?php
use UI\Window;
use UI\Controls\ColorButton;
use UI\Controls\Box;
use UI\Draw\Color;
$window = new Window('Farbwähler-Demo', 300, 100, true);
$window->setMargined(true);
$box = new Box(Box::Vertical);
$box->setPadded(true);
$colorButton = new ColorButton();
// Startwert setzen (rot)
$colorButton->setColor(new Color(1.0, 0.0, 0.0, 1.0));
// Callback bei Farbänderung
$colorButton->onChange(function (ColorButton $btn) {
$color = $btn->getColor();
echo sprintf(
"Neue Farbe: R=%.2f G=%.2f B=%.2f A=%.2f\n",
$color->getRed(),
$color->getGreen(),
$color->getBlue(),
$color->getAlpha()
);
});
$box->append($colorButton);
$window->add($box);
$window->show();
UI\main();
Aktuell gesetzte Farbe programmatisch auslesen
<?php
use UI\Controls\ColorButton;
use UI\Draw\Color;
$btn = new ColorButton();
// Farbe programmatisch auf Grün setzen
$btn->setColor(new Color(0.0, 1.0, 0.0, 1.0));
$c = $btn->getColor();
echo sprintf(
'Rot: %.0f%%, Grün: %.0f%%, Blau: %.0f%%',
$c->getRed() * 100,
$c->getGreen() * 100,
$c->getBlue() * 100
);
// Wichtig · Fallstricke
Erweiterung erforderlich: UI\Controls\ColorButton setzt die PECL-Erweiterung ui voraus, die auf PECL verfügbar ist und auf libui basiert. Sie ist nicht in der Standard-PHP-Distribution enthalten.
Plattformabhängigkeit: Der angezeigte Farbwähler-Dialog entspricht dem nativen Dialog des jeweiligen Betriebssystems (Windows, macOS, GTK unter Linux). Das genaue Aussehen und der Funktionsumfang können daher variieren.
Kein Web-Einsatz: Die UI-Erweiterung ist ausschließlich für PHP-CLI-Desktop-Anwendungen konzipiert und nicht für den Einsatz in Web-Umgebungen geeignet.