Path
Créez des chemins avec des commandes telles que déplacer, ligne, quad, cube, arc et fermer. Convient pour personnaliser les pointeurs, les courbes et les contours combinés, ainsi que pour définir des règles de remplissage et des traits.
Exemple
function main() {
return (
<Path
commands={[
{ op: 'move', x: 10, y: 80 },
{ op: 'line', x: 60, y: 10 },
{ op: 'line', x: 110, y: 80 },
{ op: 'close' },
]}
background={$env.accent}
stroke={$env.foreground}
lineWidth={2}
/>
);
}
Utilisation
- commands s’exécutent dans l’ordre : move démarre, line/quad/cubic/arc ajoutent, close ferme. x/y d’arc est son centre. evenOdd permet des trous imbriqués. Revenir au départ n’équivaut pas à close.
- contentAnimation concerne texte, images et données structurées. interpolate exige des points/closed Polyline, commandes Path ou échantillons compatibles. Un changement de structure produit une mise à jour immédiate.
Propriétés
commandsReadonlyArray<PathCommand>Commandes de tracé locales en points. Un tableau vide ne dessine rien.
[{op: "move", x: 0, y: 0}, {op: "line", x: 100, y: 80}]fillRule?"nonZero" | "evenOdd"Règle de remplissage : nonZero ou evenOdd.
"nonZero"background?PaintRemplissage de l’intérieur du tracé. Transparent par défaut.
"clear"stroke?PaintTrait de couleur ou dégradé ; clear le masque.
HDR($env.dark ? "white" : "black")lineWidth?numberÉpaisseur du trait en points ; 0 ne dessine aucun trait.
2lineCap?"round" | "butt" | "square"Extrémité : butt coupe au point, square prolonge en carré, round arrondit.
"round"lineJoin?"round" | "miter" | "bevel"Forme des jonctions : miter, round ou bevel.
"round"dash?number[]Longueurs alternées de traits et d’espaces en points ; tableau vide pour un trait continu.
[]dashPhase?numberDécalage du motif de tirets en points.
0trimStart?numberIntervalle visible de trimStart à trimEnd dans 0–1. Circle/Ellipse/Arc utilisent des angles.
0trimEnd?numberIntervalle visible de trimStart à trimEnd dans 0–1. Circle/Ellipse/Arc utilisent des angles.
1contentAnimation?ContentAnimationTransition de contenu facultative. interpolate exige le même nombre de commandes et la même séquence d’opérations ; sinon la mise à jour est immédiate.
{type: "interpolate", duration: 0.25}Propriétés communes
width?number | "auto" | "fill"Largeur en points, taille automatique ou remplissage du parent.
"fill"height?number | "auto" | "fill"Hauteur en points, taille automatique ou remplissage du parent.
"fill"x?numberDécalage visuel en points : x vers la droite, y vers le bas, sans modifier l’espace de mise en page.
0y?numberDécalage visuel en points : x vers la droite, y vers le bas, sans modifier l’espace de mise en page.
0transform?ViewTransformTransformation globale sans changer la mise en page. Translation en points, rotation/inclinaison en degrés, échelle 1 inchangée, ancrages 0–1.
{rotation: 0}opacity?numberOpacité globale du View : 0 transparent, 1 opaque.
1clipped?booleanDécoupe les dessins dépassant les limites du View.
falseclip?"rectangle" | "ellipse"Forme de découpe rectangle ou ellipse ; Material accepte aussi false pour la désactiver.
"rectangle"mask?View | nullView de masque alpha. Centrée sans modifier la disposition ; null désactive le masque.
<Circle width="fill" height="fill" background="white"/>zIndex?numberOrdre entre éléments frères ; les valeurs élevées sont devant.
0blur?numberRayon du flou en points ; 0 le désactive.
4innerShadow?DrawingEffectCouleur, opacité, rayon du flou et décalage x/y de l’effet ; distances en points.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectCouleur, opacité, rayon du flou et décalage x/y de l’effet ; distances en points.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorCouleur de l’ombre extérieure.
HDR("black")shadowOpacity?numberOpacité de l’ombre de 0 à 1 ; 0 la masque.
0shadowRadius?numberRayon du flou de l’ombre extérieure, en points.
4shadowX?numberDécalage de l’ombre en points : x à droite, y en bas.
0shadowY?numberDécalage de l’ombre en points : x à droite, y en bas.
2animations?Animation[]Anime les changements de propriété. duration/delay en secondes ; from/to définissent les extrémités ; repeat/autoreverse la répétition, wrap la période.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberIdentifiant stable parmi les éléments frères.
Exemple pratique
function main() {
return (
<Path
width={140}
height={100}
fillRule="evenOdd"
background={$env.accent}
commands={[
{ op: 'move', x: 0, y: 0 },
{ op: 'line', x: 140, y: 0 },
{ op: 'line', x: 140, y: 100 },
{ op: 'line', x: 0, y: 100 },
{ op: 'close' },
{ op: 'move', x: 35, y: 25 },
{ op: 'line', x: 105, y: 25 },
{ op: 'line', x: 105, y: 75 },
{ op: 'line', x: 35, y: 75 },
{ op: 'close' },
]}
/>
);
}
Animation
widthheightxyopacitybackgroundblurshadowColorshadowOpacityshadowRadiusshadowXshadowYtrimStarttrimEnddashPhasestrokelineWidthtransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYEn cas d’omission
Le tableau décrit les omissions vérifiées dans l’implémentation. Les exemples de propriétés ne sont pas des valeurs par défaut. Pour un résultat fixe, passez une valeur explicite ; tailles et couleurs contextuelles ne sont pas constantes.
| Propriétés | En cas d’omission |
|---|---|
commands | [] |
fillRule | "nonZero" |
background | "clear" |
lineWidth | 2 |
stroke | HDR($env.dark ? 'white' : 'black') |