绘制同心圆:应填充内圆

时间:2014-04-03 06:26:41

标签: ios core-graphics

我试图获得一个形状为enter image description here

的按钮

这是我正在尝试的当前代码。它实现了同心圆,但外层则被填充。帮助

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

2 个答案:

答案 0 :(得分:1)

制作两个上下文并仅填充内圈

- (void)drawRect:(CGRect)rect
{
    CGContextRef outer = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(outer, 1.5);
    CGContextSetStrokeColorWithColor(outer, [UIColor blueColor].CGColor);
    CGContextAddEllipseInRect(outer, CGRectMake(rect.origin.x + 5, rect.origin.y + 5, rect.size.width - 10, rect.size.height - 10));
    CGContextStrokePath(outer);

    CGContextRef inner = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(inner, 1.5);
    CGContextSetFillColorWithColor(inner, [UIColor blueColor].CGColor);
    CGContextAddEllipseInRect(inner, CGRectMake(rect.origin.x + 15, rect.origin.y + 15, rect.size.width - 30, rect.size.height - 30));
    CGContextFillPath(inner);
}

我在外部上下文中添加了5个单位的填充,使其看起来像圆形而不是圆角矩形。

答案 1 :(得分:0)

在自定义视图drawRect:

    CGContextSetLineWidth(outerCircleContext, 1.0);

    CGContextSetStrokeColorWithColor(outerCircleContext, [UIColor greenColor].CGColor);

    CGRect outerRectangle = CGRectMake(CGRectGetMidX(rect) - 25, CGRectGetMidY(rect) - 25 , 50, 50);

    CGContextAddEllipseInRect(outerCircleContext, outerRectangle);

    CGContextStrokePath(outerCircleContext);




    CGContextRef innerCircleContext = UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(innerCircleContext, 1.0);

    CGContextSetFillColorWithColor(innerCircleContext, [UIColor greenColor].CGColor);

    CGRect innerRectangle = CGRectMake(CGRectGetMidX(rect) - 20, CGRectGetMidY(rect) - 20 , 40, 40);

    CGContextAddEllipseInRect(innerCircleContext, innerRectangle);

    CGContextFillPath(innerCircleContext);

也可以使用path