user1300542
user1300542

Reputation:

How can i draw a semicircle using CoreGraphics

I am trying to draw a semicircle using Core Graphics and Filling it with some color.I want to replace color with image by using CALayer. Can any one help how to do this Thanks!

Code goes here.

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

Upvotes: 6

Views: 8421

Answers (4)

zero3nna
zero3nna

Reputation: 2918

The given answers are not working on iOS 7 for me!
I created a little category to create a circle with the angle of a percentage. Maybe you wanna check it out.
You can still adopt the methode if you only want to create a semicircle.
Here is the: GitHub Link
And that is what its look like:

persentage circle

Upvotes: 5

Mohamad Chami
Mohamad Chami

Reputation: 1234

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

Upvotes: 0

bandejapaisa
bandejapaisa

Reputation: 26952

What you need, which I found the other day, is a great tool that lets you visualise Core Graphics code - after drawing it in a graphics program.

Its called Paint Code.

PaintCode

Upvotes: -2

Sijmen Mulder
Sijmen Mulder

Reputation: 5819

You need to specify the angles in radians, not degrees. 180 degrees = π radians. So in your example:

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

Note that I also moved the starting point (…MoveToPoint) 10 pixels to the right, because that’s where the arc begins.

Upvotes: 7

Related Questions