如何在iPhone中绘制同心圆?

时间:2011-05-19 15:37:03

标签: iphone objective-c core-graphics geometry

我想画一个戒指。戒指应该填充在外圈。我提到了一份文件http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_paths/dq_paths.html#//apple_ref/doc/uid/TP30001066-CH211-TPXREF101。但仍然有问题得到结果。这是代码。

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextClearRect(ctx, rect);
CGContextSetRGBFillColor(ctx, 0.0, 255.0, 1.0, 1.0);CGContextFillPath(ctx);
CGContextStrokeEllipseInRect(ctx, CGRectMake(125, 125, 150, 150));
CGContextBeginPath(ctx);
CGContextEOFillPath(ctx);
CGContextFillEllipseInRect(ctx, CGRectMake(100, 100, 200, 200));

1 个答案:

答案 0 :(得分:13)

你需要更像这样的东西:

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextAddEllipseInRect(ctx, rect);
    CGContextAddEllipseInRect(ctx, 
                CGRectMake(
                    rect.origin.x + 10, 
                    rect.origin.y + 10, 
                    rect.size.width - 20, 
                    rect.size.height - 20));
    CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor blueColor] CGColor]));
    CGContextEOFillPath(ctx);
}

这将在当前路径中添加两个椭圆(一个小于另一个,但以同一点为中心)。当EOFillPath填充路径时,它将基本上从外椭圆“减去”内椭圆。

要创建“同心”圆圈,如果这真的是你想要的,你可以简单地重复这个 - 更多 - 更小 - 椭圆。