如何填充CGrect中的色彩空间

时间:2011-10-20 22:48:20

标签: objective-c cocoa

我正在使用下面的代码并且我正在尝试所有颜色来绘制它所得到的圆圈,但不能为我的生活弄明白!有人可以帮忙吗?如何在我的方法绘制中为圆圈着色?

到目前为止我所拥有的是:

-(void)drawCircleAtPoint:(CGPoint)p withRadius:(CGFloat)radius inContext:(CGContextRef)context
{
    UIGraphicsPushContext(context);
    CGContextBeginPath(context);
    CGContextAddArc(context, p.x, p.y, radius, 0, 2*M_PI, YES);
    CGContextStrokePath(context);
    UIGraphicsPopContext(); 
}

- (void)drawRect:(CGRect)rect
{
    CGPoint midPoint;
    midPoint.x = self.bounds.origin.x + self.bounds.size.width/2;
    midPoint.y = self.bounds.origin.y + self.bounds.size.width/2;

    CGFloat size = self.bounds.size.width/2;
    if (self.bounds.size.height < self.bounds.size.width) size = self.bounds.size.height/2;
    size *= 0.90;

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(context, 10.0);
    [[UIColor blackColor] setStroke];

    CGColorRef color = [[UIColor redColor] CGColor];
    CGContextSetFillColorWithColor(context, color);
    CGContextFillPath(context);

    [self drawCircleAtPoint:midPoint withRadius:size inContext:context];
}

1 个答案:

答案 0 :(得分:0)

您正在尝试填充当前路径,但尚未添加任何内容。您在当前路径中添加任何内容的唯一点是drawCircleAtPoint:withRadius:inContext:,之后您只需要对其进行描边。

将您的CGContextFillPath电话移至该方法。您需要在笔划之前填充,因为笔划将重置当前路径。 (如果要填充笔划内部的顶部,则需要在抚摸之前保存gstate并在之后恢复它,以便在填充时仍然设置当前路径。)