Circle
Disegna un cerchio o un arco perfetto all'interno dell'area disponibile, adatto per l'avanzamento circolare e le scale metriche. Il diametro assume il valore più piccolo tra larghezza e centro. startAngle e sweepAngle controllano l'intervallo di visualizzazione. Quando l'intero cerchio è chiuso, lo sfondo può essere riempito.
Esempio
function main() {
return (
<Circle
width={120}
height={120}
background="clear"
stroke={$env.accent}
lineWidth={8}
startAngle={-90}
sweepAngle={240}
strokePosition="inside"
/>
);
}
Utilizzo
- Circle usa il lato minore e centra il cerchio: 160×100 produce diametro 100. startAngle/sweepAngle cambiano il contorno; transform modifica il risultato intero.
- Angoli in gradi: 0 destra, 90 basso, sweep positivo orario. startAngle modulo 360, sweepAngle limitato a −360…360. Zero non disegna, ±360 chiude. wrap:360 solo per startAngle.
- Ellipse e Arc usano tutta larghezza e altezza; uguali danno un cerchio. Gli archi parziali restano aperti senza unirsi al centro. background riempie solo un giro intero chiuso.
Proprietà
startAngle?numberAngolo iniziale in gradi, normalizzato modulo 360 durante il campionamento.
0sweepAngle?numberAmpiezza in gradi, limitata a -360…360 durante il campionamento. I valori positivi seguono il senso orario; wrap non è supportato.
360background?PaintRiempimento di un cerchio o ellisse completi e chiusi. Ignorato per archi parziali.
HDR($env.dark ? "white" : "black")stroke?PaintColore o gradiente del tratto; clear lo nasconde.
"clear"lineWidth?numberSpessore del tratto in punti; 0 non disegna il tratto.
2strokePosition?"inside" | "center" | "outside"Posizione del tratto rispetto al contorno completo del cerchio o dell’ellisse. Valore predefinito: inside.
"inside"lineCap?"round" | "butt" | "square"Estremità: butt taglia, square prolunga in quadrato, round arrotonda.
"round"dash?number[]Lunghezze alternate di tratto e spazio in punti; array vuoto per linea continua.
[]dashPhase?numberSpostamento del motivo tratteggiato in punti.
0Proprietà 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?CircleAnimation[]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 (
<ZStack width={140} height={140}>
<Circle
width="fill"
height="fill"
background="clear"
stroke="#88888833"
lineWidth={10}
/>
<Circle
width="fill"
height="fill"
background="clear"
stroke={$env.accent}
lineWidth={10}
startAngle={-90}
sweepAngle={270}
lineCap="round"
/>
<Text fontSize={36}>75%</Text>
</ZStack>
);
}
Animazione
widthheightxyopacitybackgroundblurshadowColorshadowOpacityshadowRadiusshadowXshadowYdashPhasestrokelineWidthstartAnglesweepAngletransform.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 |
|---|---|
startAngle | 0 |
sweepAngle | 360 |
lineWidth | 2 |
strokePosition | "inside" |
background | HDR($env.dark ? 'white' : 'black') |