我想画个戒指。圆环应填充在外圈中。我引用了一个文档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));

最佳答案

您需要更多类似这样的东西:

- (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填充路径时,它将本质上从外部椭圆“减去”内部椭圆。

要创建“同心”圆,如果这确实是您想要的,则可以重复此操作以生成更多(不断变小的)椭圆。

10-04 13:26