Arc
ارسم قوسًا بيضاويًا وفقًا لزاوية البداية والزاوية الشاملة، وهو مناسب لأقواس المقياس وعرض التقدم. يتم تحديد الحدود حسب العرض والارتفاع. يمكن تكوين العرض ونقطة النهاية وموضع الحد، ويُسمح للخلفية بالملء عند إغلاقها بالكامل.
مثال
function main() {
return (
<Arc
width={120}
height={120}
startAngle={-90}
sweepAngle={240}
stroke={$env.accent}
lineWidth={8}
lineCap="round"
strokePosition="center"
/>
);
}
الاستخدام
- Ellipse وArc يستخدمان العرض والارتفاع كاملين؛ تساويهما يعطي دائرة. القوس الجزئي مفتوح ولا يتصل بالمركز. background يملأ دورة كاملة مغلقة فقط.
- الزاوية بالدرجات: 0 يمينًا، 90 للأسفل، sweep الموجب مع الساعة. startAngle بترديد 360 وsweepAngle بين −360…360. صفر لا يرسم و±360 دورة. wrap:360 لـ startAngle فقط.
- background/stroke يقبلان Color أو Gradient. استخدم دوال Gradient الثلاث: المواقع والمراكز 0–1، وأنصاف الأقطار بالنقاط. HDR يغلف لونًا واحدًا وسطوعه يعتمد على الجهاز والعرض.
الخصائص
startAngle?numberزاوية البداية بالدرجات، تُطبّع بترديد 360 عند أخذ العينات.
-90sweepAngle?numberزاوية المسح بالدرجات، تُحصر بين -360…360 عند أخذ العينات. القيم الموجبة مع عقارب الساعة؛ wrap غير مدعوم.
270background?Paintتعبئة دائرة أو قطع ناقص كامل ومغلق. تُتجاهل للأقواس الجزئية.
"clear"stroke?Paintلون أو تدرج للخط؛ clear يخفيه.
HDR($env.dark ? "white" : "black")lineWidth?numberسماكة الخط بالنقاط؛ 0 لا يرسم خطاً.
2strokePosition?"inside" | "center" | "outside"موضع الحد بالنسبة إلى محيط الدائرة أو القطع الناقص الكامل. الافتراضي inside.
"inside"lineCap?"round" | "butt" | "square"نهاية الخط: butt يقطع، square يمدد بشكل مربع، round يدوّر.
"round"dash?number[]أطوال متناوبة للرسم والفراغ بالنقاط؛ المصفوفة الفارغة خط متصل.
[]dashPhase?numberإزاحة نمط الشرطات بالنقاط.
0الخصائص المشتركة
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?ArcAnimation[]تحريك تغير الخاصية. duration/delay بالثواني، from/to للنهايات، repeat/autoreverse للتكرار وwrap للدورة.
[{property: "opacity", duration: 0.25, curve: "easeInOut"}]key?string | numberمعرّف ثابت بين العناصر الشقيقة.
مثال عملي
function main() {
return (
<Arc
width={180}
height={100}
startAngle={180}
sweepAngle={180}
background="clear"
stroke={LinearGradient(['#30B3A2', '#A9E56F'])}
lineWidth={8}
strokePosition="inside"
lineCap="round"
/>
);
}
الحركة
widthheightxyopacitybackgroundblurshadowColorshadowOpacityshadowRadiusshadowXshadowYdashPhasestrokelineWidthstartAnglesweepAngletransform.translateXtransform.translateYtransform.scaleXtransform.scaleYtransform.rotationtransform.skewXtransform.skewYtransform.anchorXtransform.anchorYعند الإغفال
الجدول يوضح سلوك الإغفال المتحقق من التنفيذ؛ الأمثلة ليست افتراضيات. لنتيجة ثابتة مرر قيمة صريحة؛ الأبعاد وألوان الثيم متغيرة بحسب السياق.
| الخصائص | عند الإغفال |
|---|---|
startAngle | -90 |
sweepAngle | 270 |
lineWidth | 2 |
strokePosition | "inside" |
background | "clear" |
stroke | HDR($env.dark ? 'white' : 'black') |