如何使用CoreGraphics绘制半圆

时间:2012-03-30 06:24:16

标签: iphone ios xcode

我正在尝试使用Core Graphics绘制一个半圆并用一些颜色填充它。我想用CALayer替换颜色与图像。任何人都可以帮助如何做到这一点谢谢!

代码就在这里。

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

4 个答案:

答案 0 :(得分: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个像素,因为这是弧开始的位置。

答案 1 :(得分:5)

对于我来说,给定的答案在iOS 7上无效! 我创建了一个小类来创建一个角度为百分比的圆。 也许你想看看它。
如果你只想创造一个半圆,你仍然可以采用这种方法 这是:GitHub Link
这就是它的样子:

persentage circle

答案 2 :(得分: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);

答案 3 :(得分:-2)

我需要的是前几天发现的,它是一个很棒的工具,可以让你在Core Graphics代码中可视化 - 在图形程序中绘制它之后。

它叫做油漆代码。

PaintCode