Polyline
ارسم خطًا متعدد الخطوط من خلال توصيل مجموعة من النقاط بالتسلسل. closed يمكنه توصيل النقطة الأخيرة والنقطة الأولى لتكوين محيط مغلق، ويسمح بالملء؛ تستخدم الإحداثيات عدد النقاط الموجودة في View الحالي.
مثال
function main() {
return (
<Polyline
points={[
{ x: 0, y: 80 },
{ x: 60, y: 10 },
{ x: 120, y: 80 },
]}
closed={true}
background="#30B3A233"
stroke={$env.accent}
lineWidth={3}
/>
);
}
الاستخدام
- points تتصل بالترتيب؛ أقل من نقطتين لا يرسم. closed=true يصل النهاية بالبداية ويتيح background. الإحداثيات نقاط لا نسب مئوية.
- contentAnimation للنص والصورة والبيانات المركبة. interpolate يحتاج توافق عدد نقاط Polyline وclosed أو أوامر Path أو عينات المخطط. تغيّر البنية يحدث فورًا.
الخصائص
pointsReadonlyArray<ViewPoint>إحداثيات النقاط المحلية بوحدة pt. لا يُرسم شيء عند وجود أقل من نقطتين.
[{x: 0, y: 20}, {x: 40, y: 0}, {x: 80, y: 40}]closed?booleanوصل آخر نقطة بالأولى؛ يمكن ملء الخط المغلق بخاصية background.
falsebackground?Paintتعبئة الخط المتعدد المغلق. تُتجاهل عندما تكون closed مساوية لـ false.
"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 (
<HStack spacing={12}>
<Polyline
width={100}
height={80}
points={[
{ x: 0, y: 70 },
{ x: 50, y: 10 },
{ x: 100, y: 70 },
]}
closed={false}
background="#30B3A244"
stroke={$env.accent}
/>
<Polyline
width={100}
height={80}
points={[
{ x: 0, y: 70 },
{ x: 50, y: 10 },
{ x: 100, y: 70 },
]}
closed={true}
background="#30B3A244"
stroke={$env.accent}
/>
</HStack>
);
}
الحركة
widthheightxyopacitybackgroundblurshadowColorshadowOpacityshadowRadiusshadowXshadowYtrimStarttrimEnddashPhasestrokelineWidthtransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYعند الإغفال
الجدول يوضح سلوك الإغفال المتحقق من التنفيذ؛ الأمثلة ليست افتراضيات. لنتيجة ثابتة مرر قيمة صريحة؛ الأبعاد وألوان الثيم متغيرة بحسب السياق.
| الخصائص | عند الإغفال |
|---|---|
closed | false |
background | "clear" |
lineWidth | 2 |
trimStart | 0 |
trimEnd | 1 |
stroke | HDR($env.dark ? 'white' : 'black') |