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 يحتاج توافق عدد نقاط Polyline وclosed أو أوامر 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 | nullعرض قناع ألفا. يتم توسيطه دون التأثير على التخطيط؛ تعطل 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') |