Skip to content

CustomPaint ​

Animation

Engine\Native\CustomPaint est l'équivalent natif d'Engine\Canvas (la version HTML) : une boîte de taille fixe dans laquelle vous dessinez vous-même, rejouée comme des commandes Canvas plates décalées à l'endroit où le layout a placé cette boîte. Contrairement à un widget composé (qui délègue son dessin à des enfants), il enregistre une liste d'opérations (rect/circle/line/text) via une API fluide, puis les rejoue telles quelles au moment du paint() — un seul dessin, sans diffing, exactement le contrat "one-shot" qu'Engine\Canvas a déjà côté HTML (il dessine une fois au montage, pas à chaque changement d'état).

Exemple ​

php
<?php

use Engine\Native\CustomPaint;

$sparkline = CustomPaint::make(120.0, 48.0)
    ->rect(0.0, 0.0, 120.0, 48.0, '#F3F4F6', radius: 8.0)
    ->line(8.0, 32.0, 40.0, 20.0, '#4F46E5', width: 2.0)
    ->line(40.0, 20.0, 72.0, 28.0, '#4F46E5', width: 2.0)
    ->line(72.0, 28.0, 112.0, 10.0, '#4F46E5', width: 2.0)
    ->circle(112.0, 10.0, 3.0, '#4F46E5')
    ->text(8.0, 44.0, '+12%', '#111827', size: 11.0);

Un fond arrondi de 120×48px sert de support à un mini-graphique en ligne brisée dessiné à la main, avec un point final et une légende — la même approche qu'un sparkline HTML/Canvas, mais rejouée par le moteur natif.

Constructeur ​

ParamètreTypeDéfautDescription
widthfloat—Largeur fixe de la boîte peinte, passée à static::make().
heightfloat—Hauteur fixe de la boîte, passée à static::make().

Méthodes ​

MéthodeDescription
static make(width, height)Seul moyen d'instancier la classe — le constructeur est privé.
rect(x, y, width, height, color, radius = 0.0)Empile un rectangle, coordonnées relatives à la boîte.
circle(cx, cy, radius, color)Empile un cercle plein.
line(x1, y1, x2, y2, color, width = 1.0)Empile un segment de droite.
text(x, y, text, color = '#000000', size = 16.0)Empile un texte.

À savoir. Toutes les coordonnées passées aux méthodes de dessin sont relatives au coin haut-gauche de la boîte — paint() ajoute lui-même le $x/$y absolu reçu du layout, exactement comme Canvas le fait pour tous les autres Widget.

Voir aussi ​

PhpNitro est un produit FINANFA TECH — Publié sous licence MIT.