Path
Construya caminos con comandos como mover, línea, cuadrilátero, cúbico, arco y cerrar. Adecuado para personalizar punteros, curvas y contornos combinados, y establecer reglas de relleno y trazos.
Ejemplo
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}
/>
);
}
Uso
- commands se ejecuta en orden: move inicia, line/quad/cubic/arc añade y close cierra. x/y de arc es el centro. evenOdd permite huecos anidados. Volver al punto inicial no equivale a close.
- contentAnimation cambia texto, imágenes o datos estructurados. interpolate requiere puntos/closed de Polyline, secuencia Path o muestras compatibles. Los cambios de estructura se aplican inmediatamente.
Propiedades
commandsReadonlyArray<PathCommand>Comandos de ruta locales en puntos. Un arreglo vacío no dibuja nada.
[{op: "move", x: 0, y: 0}, {op: "line", x: 100, y: 80}]fillRule?"nonZero" | "evenOdd"Regla de relleno: nonZero o evenOdd.
"nonZero"background?PaintRelleno del interior de la ruta. Transparente por defecto.
"clear"stroke?PaintColor o degradado del trazo; clear lo oculta.
HDR($env.dark ? "white" : "black")lineWidth?numberGrosor del trazo en puntos; 0 no dibuja trazo.
2lineCap?"round" | "butt" | "square"Extremos: butt corta, square prolonga en cuadrado, round redondea.
"round"lineJoin?"round" | "miter" | "bevel"Unión de segmentos: miter, round o bevel.
"round"dash?number[]Longitudes alternas de trazo y hueco en puntos; matriz vacía para línea continua.
[]dashPhase?numberDesplazamiento del patrón de guiones en puntos.
0trimStart?numberIntervalo visible trimStart–trimEnd dentro de 0–1. Circle/Ellipse/Arc usan ángulos.
0trimEnd?numberIntervalo visible trimStart–trimEnd dentro de 0–1. Circle/Ellipse/Arc usan ángulos.
1contentAnimation?ContentAnimationTransición de contenido opcional. interpolate requiere igual cantidad de comandos y secuencia de operaciones; de lo contrario se actualiza inmediatamente.
{type: "interpolate", duration: 0.25}Propiedades comunes
width?number | "auto" | "fill"Anchura en puntos, tamaño automático o relleno del contenedor.
"fill"height?number | "auto" | "fill"Altura en puntos, tamaño automático o relleno del contenedor.
"fill"x?numberDesplazamiento visual en puntos: x a la derecha, y hacia abajo, sin cambiar el espacio del diseño.
0y?numberDesplazamiento visual en puntos: x a la derecha, y hacia abajo, sin cambiar el espacio del diseño.
0transform?ViewTransformTransformación global sin alterar el diseño. Traslación en puntos, giro/inclinación en grados, escala 1 sin cambios, anclajes 0–1.
{rotation: 0}opacity?numberOpacidad de todo el View: 0 transparente, 1 opaco.
1clipped?booleanRecorta el dibujo que sobresale de los límites del View.
falseclip?"rectangle" | "ellipse"Recorte rectangle o ellipse; Material también admite false para desactivarlo.
"rectangle"mask?View | nullView de máscara alfa. Centrada sin afectar al diseño; null desactiva la máscara.
<Circle width="fill" height="fill" background="white"/>zIndex?numberOrden entre elementos hermanos; los valores mayores aparecen delante.
0blur?numberRadio de desenfoque en puntos; 0 lo desactiva.
4innerShadow?DrawingEffectColor, opacidad, radio de desenfoque y desplazamiento x/y del efecto; distancias en puntos.
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectColor, opacidad, radio de desenfoque y desplazamiento x/y del efecto; distancias en puntos.
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?ColorColor de la sombra exterior.
HDR("black")shadowOpacity?numberOpacidad de la sombra de 0 a 1; 0 la oculta.
0shadowRadius?numberRadio de desenfoque de la sombra, en puntos.
4shadowX?numberDesplazamiento de sombra en puntos: x derecha, y abajo.
0shadowY?numberDesplazamiento de sombra en puntos: x derecha, y abajo.
2animations?Animation[]Anima cambios de propiedad. duration/delay en segundos; from/to son extremos; repeat/autoreverse controlan repeticiones y wrap el período.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberIdentidad estable entre elementos hermanos.
Ejemplo práctico
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' },
]}
/>
);
}
Animación
widthheightxyopacitybackgroundblurshadowColorshadowOpacityshadowRadiusshadowXshadowYtrimStarttrimEnddashPhasestrokelineWidthtransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYAl omitir
La tabla documenta omisiones comprobadas en la implementación. Los ejemplos no son valores predeterminados. Especifica valores para resultados fijos; tamaños y colores del contexto no son constantes.
| Propiedades | Al omitir |
|---|---|
commands | [] |
fillRule | "nonZero" |
background | "clear" |
lineWidth | 2 |
stroke | HDR($env.dark ? 'white' : 'black') |