objective framework developer apple c osx drawing core-graphics

framework - CGPathAddArc vs CGPathAddArcToPoint



objective c documentation (2)

La biblioteca CoreGraphics de Apple define dos funciones para describir un arco.

  • CGPathAddArc agrega un arco basado en un punto central, radio y 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 CGPath API . ¿Por qué dos funciones? ¿Conveniencia simple? ¿Es uno más eficiente que el otro? ¿Se define uno en términos del otro?


El primero te da 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 de Bézier. Dependiendo de lo que realmente está dibujando, uno u otro podría ser más conveniente. Realmente podría considerar ambas conveniencias para CGPathAddCurveToPoint.


CGContextAddArc hace esto:

donde la línea roja es lo que se dibujará, sA es el startAngle , eA es el endAngle , r es el radius , y xey son y . Si tiene un punto anterior, la función se alineará desde este punto hasta el inicio del arco (a menos que tenga cuidado de que esta línea no vaya 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 el radius . El arco comenzará en la misma dirección que la línea entre el punto actual y (x1, y1) y terminará en la dirección entre (x1, y1) y (x2, y2) . no se alineará con (x2, y2) Se detendrá al final del círculo.