Path
สร้างเส้นทางด้วยคำสั่ง เช่น ย้าย เส้น รูปสี่เหลี่ยม ลูกบาศก์ ส่วนโค้ง และปิด เหมาะสำหรับการปรับแต่งพอยน์เตอร์ เส้นโค้ง และโครงร่างแบบรวม และการตั้งค่ากฎการเติมและเส้นขีด
ตัวอย่าง
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}
/>
);
}
การใช้งาน
- commands ทำตามลำดับ move เริ่ม line/quad/cubic/arc เพิ่มเส้น close ปิด โดย x/y ของ arc คือศูนย์กลาง evenOdd ทำช่องในรูปซ้อน การกลับจุดเริ่มไม่เท่ากับ close
- contentAnimation เปลี่ยนข้อความ ภาพ หรือข้อมูลโครงสร้าง interpolate ต้องมีจำนวนจุด/closed ของ Polyline ลำดับ Path หรือโครงสร้างกราฟที่เข้าคู่ หากโครงสร้างเปลี่ยนจะอัปเดตทันที
คุณสมบัติ
commandsReadonlyArray<PathCommand>คำสั่งเส้นทางภายใน หน่วย pt อาร์เรย์ว่างจะไม่วาด
[{op: "move", x: 0, y: 0}, {op: "line", x: 100, y: 80}]fillRule?"nonZero" | "evenOdd"กฎการเติมเส้นทาง: nonZero หรือ evenOdd
"nonZero"background?Paintสีเติมภายในเส้นทาง ค่าเริ่มต้นโปร่งใส
"clear"stroke?Paintสีหรือไล่สีเส้นขอบ clear ซ่อนเส้น
HDR($env.dark ? "white" : "black")lineWidth?numberความหนาเส้นเป็นพอยต์ 0 ไม่วาดเส้น
2lineCap?"round" | "butt" | "square"ปลายเส้น butt ตัด square ยื่นสี่เหลี่ยม round มน
"round"lineJoin?"round" | "miter" | "bevel"รูปแบบจุดต่อเส้น miter, round หรือ bevel
"round"dash?number[]ความยาวเส้นและช่องว่างสลับกันเป็นพอยต์ อาร์เรย์ว่างคือเส้นทึบ
[]dashPhase?numberระยะเลื่อนลายเส้นประเป็นพอยต์
0trimStart?numberช่วงเส้นที่แสดง trimStart–trimEnd ใน 0–1; Circle/Ellipse/Arc ใช้มุม
0trimEnd?numberช่วงเส้นที่แสดง trimStart–trimEnd ใน 0–1; Circle/Ellipse/Arc ใช้มุม
1contentAnimation?ContentAnimationการเปลี่ยนเนื้อหาแบบเลือกได้ interpolate ต้องมีจำนวนคำสั่งและลำดับการทำงานเหมือนกัน มิฉะนั้นจะอัปเดตทันที
{type: "interpolate", duration: 0.25}คุณสมบัติทั่วไป
width?number | "auto" | "fill"ความกว้างเป็นพอยต์ ปรับขนาดอัตโนมัติ หรือเติมเต็มพื้นที่แม่
"fill"height?number | "auto" | "fill"ความสูงเป็นพอยต์ ปรับขนาดอัตโนมัติ หรือเติมเต็มพื้นที่แม่
"fill"x?numberเลื่อนภาพเป็นพอยต์: x ไปขวา y ลงล่าง ไม่เปลี่ยนพื้นที่ในเลย์เอาต์
0y?numberเลื่อนภาพเป็นพอยต์: x ไปขวา y ลงล่าง ไม่เปลี่ยนพื้นที่ในเลย์เอาต์
0transform?ViewTransformแปลงทั้ง View โดยไม่เปลี่ยนเลย์เอาต์ ระยะเลื่อนเป็นพอยต์ หมุน/เอียงเป็นองศา สเกล 1 ไม่เปลี่ยน จุดยึด 0–1
{rotation: 0}opacity?numberความทึบทั้ง View: 0 โปร่งใส 1 ทึบ
1clipped?booleanตัดส่วนที่วาดเกินขอบ View
falseclip?"rectangle" | "ellipse"รูปทรงตัด rectangle หรือ ellipse; Material ใช้ false เพื่อปิดได้
"rectangle"mask?View | nullView มาสก์อัลฟา จัดกึ่งกลางโดยไม่ส่งผลต่อเลย์เอาต์; null ปิดการใช้มาสก์
<Circle width="fill" height="fill" background="white"/>zIndex?numberลำดับวาดระหว่างองค์ประกอบระดับเดียวกัน ค่ายิ่งมากยิ่งอยู่หน้า
0blur?numberรัศมีเบลอเป็นพอยต์ 0 คือปิด
4innerShadow?DrawingEffectสี ความทึบ รัศมีเบลอ และระยะ x/y ของเอฟเฟกต์ ระยะเป็นพอยต์
{color: HDR("black"), opacity: 0.5, radius: 4, x: 0, y: 2}glow?DrawingEffectสี ความทึบ รัศมีเบลอ และระยะ x/y ของเอฟเฟกต์ ระยะเป็นพอยต์
{color: HDR("cyan"), radius: 8, opacity: 0.8}shadowColor?Colorสีเงาภายนอก
HDR("black")shadowOpacity?numberความทึบเงา 0–1; 0 ซ่อนเงา
0shadowRadius?numberรัศมีเบลอเงาภายนอกเป็นพอยต์
4shadowX?numberเลื่อนเงาเป็นพอยต์: x ไปขวา y ลงล่าง
0shadowY?numberเลื่อนเงาเป็นพอยต์: x ไปขวา y ลงล่าง
2animations?Animation[]แอนิเมชันเมื่อคุณสมบัติเปลี่ยน duration/delay เป็นวินาที from/to เป็นปลายทาง repeat/autoreverse ควบคุมการซ้ำ wrap เป็นคาบ
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberตัวระบุที่คงที่ระหว่างองค์ประกอบระดับเดียวกัน
ตัวอย่างใช้งาน
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' },
]}
/>
);
}
ภาพเคลื่อนไหว
widthheightxyopacitybackgroundblurshadowColorshadowOpacityshadowRadiusshadowXshadowYtrimStarttrimEnddashPhasestrokelineWidthtransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYเมื่อไม่ระบุ
ตารางคือพฤติกรรมเมื่อไม่ระบุที่ตรวจจากโค้ด ตัวอย่างไม่ใช่ค่าเริ่มต้น หากต้องการผลแน่นอนให้ระบุค่า ขนาดและสีตามบริบทไม่ใช่ค่าคงที่
| คุณสมบัติ | เมื่อไม่ระบุ |
|---|---|
commands | [] |
fillRule | "nonZero" |
background | "clear" |
lineWidth | 2 |
stroke | HDR($env.dark ? 'white' : 'black') |