在Objective-c中绘图

时间:2012-04-20 12:05:10

标签: objective-c core-graphics

这是我第一次画画,所以它一定是非常愚蠢的东西,但我的drawRect:方法不起作用...... 这是我的代码:

- (void)drawRect:(CGRect)rect {
    CGPoint center = CGPointMake(self.bounds.origin.x + self.bounds.size.width / 2, self.bounds.origin.y + self.bounds.size.height / 2);self.bounds.origin.y + self.bounds.size.height / 2)
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [[UIColor redColor] setStroke];
    CGFloat radius = (self.bounds.size.width > self.bounds.size.height) ? self.bounds.size.width - 30 : self.bounds.size.height - 30;
    CGContextBeginPath(ctx);
    CGContextAddArc(ctx, center.x, center.y, radius, 0, 2 * M_PI, YES);
    CGContextStrokePath(ctx);
}

3 个答案:

答案 0 :(得分:3)

弧的半径是从其中心开始测量的。您几乎使用整个视图的宽度/高度,以便将弧线绘制在可见区域之外。使用较小的半径,你会看到你的弧。

顺便说一下,如果你想要的只是绘制一个圆(角度为2π的弧是相同的),CGContextAddEllipseInRect更容易使用。

答案 1 :(得分:2)

您正在视图外部绘制圆圈。 CGContextAddArc将radius作为参数。在您的情况下,您给出方法直径。 快速修复:

radius/=2;

答案 2 :(得分:0)

你的例子正在运作。它实际上是绘图,但你看不到圆,因为半径变量可能是一个很大的值,使得圆被绘制到视图的边界之外。 只需用一个值(例如20)替换手动半径值,您就会发现它工作正常。

此致