CGPathAddArc vs CGPathAddArcToPoint
-
09-06-2019 - |
سؤال
تحدد مكتبة CoreGraphics من Apple وظيفتين لوصف القوس.
- يضيف CGPathAddArc قوسًا يعتمد على نقطة مركزية ونصف قطر وزوج من الزوايا.
- يضيف CGPathAddArcToPoint قوسًا يعتمد على نصف القطر وزوج من خطوط المماس.
التفاصيل موضحة في مرجع CGPath API.لماذا وظيفتين؟راحة بسيطة؟هل أحدهما أكثر كفاءة من الآخر؟هل يتم تعريف أحدهما من حيث الآخر؟
المحلول
يمنحك الأول جزءًا من الدائرة (في الحقيقة، تقريبًا لواحد)، بينما يكشف الأخير حقيقة أنك تقوم بإنشاء مسار بيزييه.اعتمادًا على ما ترسمه بالفعل، قد يكون أحدهما أكثر ملاءمة.يمكنك حقًا اعتبار كل منهما ملائمًا لـ CGPathAddCurveToPoint.
نصائح أخرى
CGContextAddArc
يفعل هذا:
حيث الخط الأحمر هو ما سيتم رسمه، sA هو startAngle
, ، eA هو endAngle
, ، ص هو radius
, و x و y هما x
و y
.إذا كانت لديك نقطة سابقة فإن الدالة ستمتد من هذه النقطة إلى بداية القوس (ما لم تكن حذرًا فإن هذا الخط لن يسير في نفس اتجاه القوس).
CGContextAddArcToPoint
يعمل مثل هذا:
حيث P1 هي النقطة الحالية للمسار، فإن x1، x2، y1، y2 تتطابق مع الوظائف x1
, x2
, y1
, y2
و ص هو radius
.سيبدأ القوس في نفس اتجاه الخط الفاصل بين النقطة الحالية و (x1, y1)
وتنتهي في الاتجاه بين (x1, y1)
و (x2, y2)
.لن يتماشى مع ذلك (x2, y2)
وسوف تتوقف عند نهاية الدائرة.