2012-03-30 12 views
6

? Estoy tratando de dibujar un semicírculo utilizando Core Graphics y llenándolo con un poco de color. Quiero reemplazar el color con la imagen usando CALayer. ¿Alguien puede ayudar a hacer esto? ¡Gracias!¿Cómo puedo dibujar un semicírculo usando CoreGraphics

El código va para aquí.

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetLineWidth(context, 2); 
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
CGContextMoveToPoint(context, 0, 500); 
CGContextAddArc(context, 60, 500, 50, 90, 180, 0); 
CGContextStrokePath(context); 
+1

Este enlace puede ayudarle a: http://stackoverflow.com/questions/3729690/draw-part- de-a-circle y también verificar: http://stackoverflow.com/questions/2835448/how-to-draw-a-rounded-rectangle-in-core-graphics-quartz-2d – Devang

Respuesta

7

es necesario especificar los ángulos en radians, no grados. 180 grados = π radianes. Así que en su ejemplo:

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetLineWidth(context, 2); 
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor); 
CGContextMoveToPoint(context, 10, 500); 
CGContextAddArc(context, 60, 500, 50, M_PI/2, M_PI, 0); 
CGContextStrokePath(context); 

Tenga en cuenta que también se trasladó el punto de partida (... MoveToPoint) 10 píxeles a la derecha, porque ahí es donde comienza el arco.

-2

Lo que necesita, que encontré el otro día, es una gran herramienta que le permite visualizar el código de Core Graphics, después de dibujarlo en un programa de gráficos.

Se llama código de pintura.

PaintCode

+0

Se puede usar Can Piantcode para crear diseños personalizados controles. Supongamos que quiero dibujar un arco lleno con un texto en el medio del arco que quiero cambiar en tiempo de ejecución. Efectivamente un nuevo tipo de control. ¿Puede PaintCode hacer eso? No es muy obvio al mirar su sitio web? – OneGuyInDc

+0

Instalarlo (la demostración) y ver. No lo sé. – bandejapaisa

5

Las respuestas dadas no están trabajando en iOS 7 para mí!
Creé una pequeña categoría para crear un círculo con el ángulo de un porcentaje. Quizás quieras verificarlo.
Aún puede adoptar el método si solo desea crear un semicírculo.
Aquí es el: GitHub Link
Y eso es lo que su aspecto como:

persentage circle

+0

¡Excelente trabajo! ... –

+0

El texto no se muestra en los resultados. Pensé que no habías agregado el texto en el contexto de la imagen, ¿verdad? –

0
CGPoint circleCenter = CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2); 

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetLineWidth(context, 2); 
CGContextMoveToPoint(context, circleCenter.x, circleCenter.y); 


CGContextAddArc(context, circleCenter.x, circleCenter.y, 50, 90, 180, 0); 
CGContextAddLineToPoint(context, circleCenter.x, circleCenter.y); 
CGContextSetFillColorWithColor(context, [UIColor colorWithPatternImage:[UIImage imageNamed:@"add-icon.png"]].CGColor); 
CGContextFillPath(context); 

CGContextAddArc(context, circleCenter.x, circleCenter.y, 50, 180, 90, 0); 
CGContextAddLineToPoint(context, circleCenter.x, circleCenter.y); 
CGContextSetFillColorWithColor(context, [UIColor colorWithPatternImage:[UIImage imageNamed:@"appIcon_58.png"]].CGColor); 
CGContextFillPath(context); 
Cuestiones relacionadas