¿Es posible dibujar un arco elíptico como la ruta SVG, en CoreGraphics y cómo?Cómo dibujar un arco elíptico con CoreGraphics?
5
A
Respuesta
5
Me encontré con lo mismo esta noche. CG no ofrece una forma fácil de dibujar un arco no circular, pero puede hacerlo utilizando CGPath y una matriz de transformación adecuada. Supongamos que desea un arco de una elipse alineada con el eje comenzando a la izquierda, arriba y con un tamaño de ancho, alto. A continuación, puede hacer algo como esto:
CGFloat cx = left + width*0.5;
CGFloat cy = top + height*0.5;
CGFloat r = width*0.5;
CGMutablePathRef path = CGPathCreateMutable();
CGAffineTransform t = CGAffineTransformMakeTranslation(cx, cy);
t = CGAffineTransformConcat(CGAffineTransformMakeScale(1.0, height/width), t);
CGPathAddArc(path, &t, 0, 0, r, startAngle, endAngle, false);
CGContextAddPath(g->cg, path);
CGContextStrokePath(g);
CFRelease(path);
Tenga en cuenta que si desea dibujar una cuña en forma de pastel, a continuación, sólo rodean el "CGContextAddPath" llame con un CGContextMoveToPoint (cx, cy) y una CGContextAddLineToPoint (cx, cy), y usa CGContextFillPath en lugar de CGContextStrokePath. (O si desea llenar y trazar al mismo tiempo, use CGContextDrawPath.)
Cuestiones relacionadas
- 1. iOS CoreGraphics: Dibujar arco, determinar ángulos de arco del teorema de acordes de intersección
- 2. ¿Cómo puedo dibujar un semicírculo usando CoreGraphics
- 3. dibujar arco con relieve utilizando gráficos centrales
- 4. ¿Cómo dibujar solo esta parte del arco?
- 5. Android - Cómo dibujar un degradado basado en arco
- 6. CoreGraphics dibujar una imagen en un lienzo en blanco
- 7. Dibujar arco con 2 puntos y el centro del círculo
- 8. ¿Cómo añadir un arco sencillo con D3
- 9. Dibujar en la pantalla retina usando CoreGraphics - Imagen pixelada
- 10. Dibuja un arco con un SweepGradient en Android
- 11. C++ algoritmo de línea de Bresenham dibujar arco y rotar
- 12. Cómo dibujar la línea de arco/curva con MKOverlayView en MKMapView
- 13. ¿Rescate de un objeto con arco?
- 14. ¿Cómo puedo dibujar un arco lleno de degradado, es decir, arcoíris?
- 15. CoreGraphics FillPath And Stroke Path
- 16. Píntame un arco iris
- 17. Encontrar min/max de bezier cuadrático con CoreGraphics
- 18. texto sorteo utilizando CoreGraphics en iPhone
- 19. Al dibujar un arco usando CGContextAddArcToPoint(), ¿qué significa (x1, y1) y (x2, y2)?
- 20. Fondo transparente en CoreGraphics
- 21. cómo dibujar un corazón con pylab
- 22. Cómo dibujar un QPixmap con transparencia
- 23. Trazando un arco en discretos pasos
- 24. ¿Qué es diferente entre CoreGraphics y CoreAnimation?
- 25. Cómo dibujar un rectángulo?
- 26. comparación flotador (igualdad) en CoreGraphics
- 27. Cómo dibujar 'Biohazard' con swing
- 28. CSS3 Traducir a través de un arco
- 29. Calcular ruta de arco n-dimensional
- 30. Cómo dibujar un triángulo programáticamente
Funciona muy bien - Nota: no cometa el error que cometí :). la traducción CGAffineTransformMakeTranslation es * requerida * incluso si está usando MoveToPoint (porque la transformación t debe aplicarse mientras la curva está en el origen, o la transformación de escala de Apple TAMBIÉN multiplicará su desplazamiento desde el origen!) – Adam
Tenga en cuenta que también escala el ancho del trazo. – Grodriguez