Как нарисовать концентрический круг в iphone? - PullRequest
8 голосов
/ 19 мая 2011

Я хочу нарисовать кольцо.Кольцо должно быть заполнено внешним кругом.Я сослался на документацию 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 Ответ

13 голосов
/ 19 мая 2011

Вам нужно что-то более похожее на это:

- (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 будет по существу «вычитать» внутренний эллипс из внешнего эллипса, когда он заполняет путь.

Чтобы создать «концентрические» круги, если это действительно то, что вы хотели, вы можете просто повторить это для большего - непрерывно меньшего - эллипса.

...