CGPathAddArc y CGPathAddArcToPoint
-
09-06-2019 - |
Pregunta
La biblioteca CoreGraphics de Apple define dos funciones para describir un arco.
- CGPathAddArc agrega un arco basado en un punto central, un radio y un par de ángulos.
- CGPathAddArcToPoint agrega un arco basado en un radio y un par de líneas tangentes.
Los detalles se explican en la referencia de la API CGPath.¿Por qué dos funciones?¿Simple comodidad?¿Es uno más eficiente que el otro?¿Se define uno en términos del otro?
Solución
El primero te ofrece una porción de un círculo (en realidad, una aproximación de uno), mientras que el segundo expone el hecho de que estás creando un camino Bézier.Dependiendo de lo que estés dibujando, uno u otro puede ser más conveniente.Realmente podrías considerar ambas conveniencias para CGPathAddCurveToPoint.
Otros consejos
CGContextAddArc
Haz esto:
donde la línea roja es lo que se dibujará, sA es startAngle
, eA es el endAngle
, r es radius
, y x e y son x
y y
.Si tiene un punto anterior, la función trazará una línea desde este punto hasta el inicio del arco (a menos que tenga cuidado, esta línea no irá en la misma dirección que el arco).
CGContextAddArcToPoint
funciona así:
Donde P1 es el punto actual de la ruta, x1, x2, y1, y2 coinciden con las funciones x1
, x2
, y1
, y2
y r es radius
.El arco comenzará en la misma dirección que la línea entre el punto actual y (x1, y1)
y termina en la dirección entre (x1, y1)
y (x2, y2)
.no se alineará con (x2, y2)
Se detendrá al final del círculo.