2012-03-30 2 views
6

Я пытаюсь нарисовать полукруг с помощью Core Graphics и заполнить его некоторым цветом. Я хочу заменить цвет с помощью изображения с помощью CALayer. Может ли кто-нибудь помочь, как это сделать? Спасибо!Как рисовать полукруг с помощью CoreGraphics

Код идет здесь.

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

Эта ссылка может помочь вам: http://stackoverflow.com/questions/3729690/draw-part- a-circle, а также проверьте: http://stackoverflow.com/questions/2835448/how-to-draw-a-rounded-rectangle-in-core-graphics-quartz-2d – Devang

ответ

7

Необходимо указать углы в radians, а не в градусах. 180 градусов = π радиан. Таким образом, в вашем примере:

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); 

Обратите внимание, что я также переместил начальную точку (...) MoveToPoint 10 пикселов вправо, потому что это, где начинается дуга.

-2

Что вам нужно, что я нашел на днях, является отличным инструментом, который позволяет визуализировать код Core Graphics - после рисования его в графической программе.

Его названный код краски.

PaintCode

+0

Можно использовать Piantcode для создания пользовательских управления. Скажем, я хочу нарисовать заполненную дугу текстом в середине дуги, который я хочу изменить во время выполнения. Эффективно новый контроль. Может ли PaintCode сделать это? Не очень очевидно, глядя на их веб-сайт? – OneGuyInDc

+0

Установите его (демо) и посмотрите. Я не знаю. – bandejapaisa

5

данные ответы не работает на прошивке 7 для меня!
Я создал небольшую категорию, чтобы создать круг с углом в процентах. Возможно, вы хотите проверить это.
Вы все же можете использовать метод, если хотите создать полукруг.
Вот: GitHub Link
И это то, что его внешний вид, как:

persentage circle

+0

Отличная работа !!! ... –

+0

Текст не отображается в результатах поиска. Я думал, что вы не добавили текст в контекст изображения, верно? –

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); 
Смежные вопросы