Path
Costruisci percorsi con comandi come sposta, linea, quad, cubico, arco e chiudi. Adatto per personalizzare puntatori, curve e contorni combinati e per impostare regole di riempimento e tratti.
Esempio
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}
/>
);
}
Utilizzo
- commands esegue in ordine: move inizia, line/quad/cubic/arc aggiunge, close chiude. x/y di arc è il centro. evenOdd crea fori annidati. Tornare al punto iniziale non equivale a close.
- contentAnimation riguarda testo, immagini o dati strutturati. interpolate richiede punti/closed Polyline, sequenza Path o campioni compatibili. Cambi strutturali aggiornano subito.
Proprietà
commandsReadonlyArray<PathCommand>Comandi locali del percorso in punti. Un array vuoto non disegna nulla.
[{op: "move", x: 0, y: 0}, {op: "line", x: 100, y: 80}]fillRule?"nonZero" | "evenOdd"Regola di riempimento: nonZero o evenOdd.
"nonZero"background?PaintRiempimento interno del percorso. Trasparente per impostazione predefinita.
"clear"stroke?PaintColore o gradiente del tratto; clear lo nasconde.
HDR($env.dark ? "white" : "black")lineWidth?numberSpessore del tratto in punti; 0 non disegna il tratto.
2lineCap?"round" | "butt" | "square"Estremità: butt taglia, square prolunga in quadrato, round arrotonda.
"round"lineJoin?"round" | "miter" | "bevel"Forma delle giunzioni: miter, round o bevel.
"round"dash?number[]Lunghezze alternate di tratto e spazio in punti; array vuoto per linea continua.
[]dashPhase?numberSpostamento del motivo tratteggiato in punti.
0trimStart?numberIntervallo visibile trimStart–trimEnd in 0–1. Circle/Ellipse/Arc usano angoli.
0trimEnd?numberIntervallo visibile trimStart–trimEnd in 0–1. Circle/Ellipse/Arc usano angoli.
1contentAnimation?ContentAnimationTransizione di contenuto facoltativa. interpolate richiede lo stesso numero di comandi e sequenza di operazioni; altrimenti aggiorna immediatamente.
{type: "interpolate", duration: 0.25}Proprietà comuni
width?number | "auto" | "fill"Larghezza in punti, dimensione automatica o riempimento del contenitore.
"fill"height?number | "auto" | "fill"Altezza in punti, dimensione automatica o riempimento del contenitore.
"fill"x?numberSpostamento visivo in punti: x a destra, y in basso; non cambia lo spazio nel layout.
0y?numberSpostamento visivo in punti: x a destra, y in basso; non cambia lo spazio nel layout.
0transform?ViewTransformTrasformazione globale senza cambiare il layout. Traslazione in punti, rotazione/inclinazione in gradi, scala 1 invariata, ancoraggi 0–1.
{rotation: 0}opacity?numberOpacità dell’intero View: 0 trasparente, 1 opaco.
1clipped?booleanRitaglia il disegno oltre i limiti del View.
falseclip?"rectangle" | "ellipse"Forma di ritaglio rectangle o ellipse; Material accetta anche false per disattivarlo.
"rectangle"mask?View | nullView per la maschera alfa. Centrata senza modificare il layout; null disattiva la maschera.
<Circle width="fill" height="fill" background="white"/>zIndex?numberOrdine tra elementi fratelli; valori più grandi appaiono davanti.
0blur?numberRaggio della sfocatura in punti; 0 la disattiva.
4innerShadow?DrawingEffectColore, opacità, raggio di sfocatura e offset x/y dell’effetto; distanze in punti.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectColore, opacità, raggio di sfocatura e offset x/y dell’effetto; distanze in punti.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorColore dell’ombra esterna.
HDR("black")shadowOpacity?numberOpacità dell’ombra 0–1; 0 la nasconde.
0shadowRadius?numberRaggio di sfocatura dell’ombra esterna in punti.
4shadowX?numberOffset dell’ombra in punti: x a destra, y in basso.
0shadowY?numberOffset dell’ombra in punti: x a destra, y in basso.
2animations?Animation[]Anima le modifiche alle proprietà. duration/delay in secondi; from/to sono estremi; repeat/autoreverse controllano le ripetizioni, wrap il periodo.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberIdentità stabile tra elementi fratelli.
Esempio pratico
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' },
]}
/>
);
}
Animazione
widthheightxyopacitybackgroundblurshadowColorshadowOpacityshadowRadiusshadowXshadowYtrimStarttrimEnddashPhasestrokelineWidthtransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYQuando omesso
La tabella documenta omissioni verificate nell’implementazione. Gli esempi non sono valori predefiniti. Specifica valori per risultati fissi; misure e colori contestuali non sono costanti.
| Proprietà | Quando omesso |
|---|---|
commands | [] |
fillRule | "nonZero" |
background | "clear" |
lineWidth | 2 |
stroke | HDR($env.dark ? 'white' : 'black') |