Arc
Dessinez un arc elliptique en fonction de l'angle de départ et de l'angle de balayage, adapté aux arcs d'échelle et à l'affichage de la progression. La bordure est déterminée par la largeur et la hauteur. La largeur, le point final et la position du trait sont configurables, et l'arrière-plan peut se remplir lorsqu'il est complètement fermé.
Exemple
function main() {
return (
<Arc
width={120}
height={120}
startAngle={-90}
sweepAngle={240}
stroke={$env.accent}
lineWidth={8}
lineCap="round"
strokePosition="center"
/>
);
}
Utilisation
- Ellipse et Arc utilisent toute la largeur et hauteur ; elles sont égales pour un cercle. Un arc partiel reste ouvert sans rejoindre le centre. background remplit uniquement un tour complet fermé.
- Angles en degrés : 0 à droite, 90 en bas, sweep positif horaire. startAngle modulo 360 ; sweepAngle limité à −360…360. 0 ne dessine rien, ±360 ferme un tour. wrap:360 appartient à startAngle, pas à sweepAngle.
- background/stroke acceptent Color ou Gradient. Utilisez les trois constructeurs Gradient ; positions et centres vont de 0 à 1, rayons en points. HDR enveloppe une couleur ; sa luminosité dépend de l’appareil et de l’affichage.
Propriétés
startAngle?numberAngle de départ en degrés, ramené modulo 360 à chaque échantillonnage.
-90sweepAngle?numberBalayage en degrés, limité à -360…360 à chaque échantillonnage. Les valeurs positives vont dans le sens horaire ; wrap est indisponible.
270background?PaintRemplissage d’un cercle ou d’une ellipse complets et fermés. Ignoré pour les arcs partiels.
"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.
2strokePosition?"inside" | "center" | "outside"Position du trait par rapport au contour complet du cercle ou de l’ellipse. Par défaut : inside.
"inside"lineCap?"round" | "butt" | "square"Extrémité : butt coupe au point, square prolonge en carré, round arrondit.
"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.
0Proprié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?ArcAnimation[]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 (
<Arc
width={180}
height={100}
startAngle={180}
sweepAngle={180}
background="clear"
stroke={LinearGradient(['#30B3A2', '#A9E56F'])}
lineWidth={8}
strokePosition="inside"
lineCap="round"
/>
);
}
Animation
widthheightxyopacitybackgroundblurshadowColorshadowOpacityshadowRadiusshadowXshadowYdashPhasestrokelineWidthstartAnglesweepAngletransform.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 |
|---|---|
startAngle | -90 |
sweepAngle | 270 |
lineWidth | 2 |
strokePosition | "inside" |
background | "clear" |
stroke | HDR($env.dark ? 'white' : 'black') |