在两个同心椭圆之间填充颜色

时间:2014-03-20 17:04:05

标签: ios core-graphics

我是iOS开发的新手。我有两条椭圆形的贝塞尔曲线。

UIBezierPath *bpath1 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(x, y, 40, 40)];

    UIBezierPath *bpath2 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(x + 10, y + 10, 20, 20)];

我想在这些与椭圆形之间填充颜色。为了在较小的椭圆形中获得白色,我尝试了这个

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    UIBezierPath *bpath1 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(x, y, 40, 40)];

    UIBezierPath *bpath2 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(x + 10, y + 10, 20, 20)];

    UIColor *fillColor1 = [UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:0.5];
    UIColor *fillColor2 = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0];

    CGContextSetStrokeColorWithColor(context,[UIColor blackColor].CGColor);
    CGContextSetLineWidth(context, 1.2);

    CGContextAddPath(context, bpath1.CGPath);
    [fillColor1 setFill];
    [bpath1 fill];        

    CGContextAddPath(context, bpath2.CGPath);
    [fillColor2 setFill];
    [bpath2 fill];
    CGContextStrokePath(context);
}

但是外圈的颜色填充在内圈中。有没有办法只填补这两个椭圆之间的路径?

1 个答案:

答案 0 :(得分:0)

如果您只是尝试用白色填充较小的椭圆,请将fillColor2代码更改为:

UIColor *fillColor2 = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];

或者这个:

UIColor *fillColor2 = [UIColor whiteColor];

较小的圆圈显示为黑色,因为填充红色,绿色和蓝色值为0会导致黑色。