iphone在多边形内绘制渐变

时间:2011-09-28 13:45:53

标签: iphone core-graphics

我想使用核心图形在多边形内绘制渐变。我可以使用下面的代码绘制六边形,但我不知道如何用渐变色填充这个六边形。任何帮助都将非常感激。

- (void)drawRect:(CGRect)rect
 {
    // Drawing code.

    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0);

    CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);

    CGContextSetLineWidth(context, 2.0);

    CGPoint center;

    center = CGPointMake(210.0, 90.0);

    CGContextMoveToPoint(context, center.x, center.y + 60.0);

    for(int i = 1; i < 6; ++i)
    {   
          CGFloat x = 60.0 * sinf(i * 2.0 * M_PI / 6.0);

          CGFloat y = 60.0 * cosf(i * 2.0 * M_PI / 6.0);

          CGContextAddLineToPoint(context, center.x + x, center.y + y);
    }

    CGContextClosePath(context);
    CGContextDrawPath(context, kCGPathFillStroke);
}

1 个答案:

答案 0 :(得分:1)

使用以下代码进行渐变填充

CGContextRef context    = UIGraphicsGetCurrentContext();

CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();

CGFloat colors[] =

{


    0.62890625, 0.859375, 10.9921875, 1.00,
    0.65625, 0.8046875, 0.9453125, 1.00,
};

CGGradientRef gradient = CGGradientCreateWithColorComponents(rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4));

CGColorSpaceRelease(rgb);



// now we can actually create the shape and fill it



CGPoint start, end;



CGContextSetRGBFillColor(context, 0, 0, 0.6, 0.1);

CGContextFillEllipseInRect(context, CGRectMake(0.0, 0.0, 100.0, 100.0));

CGContextStrokeEllipseInRect(context, CGRectMake(0.0, 0.0, 100.0, 100.0));



// Gradient

CGRect myrect = CGRectMake(0.0, 0.0, rect.size.width, rect.size.height);

CGContextSaveGState(context);

CGContextClipToRect(context, myrect);

start = CGPointMake(myrect.origin.x, myrect.origin.y + myrect.size.height * 0.25);

end = CGPointMake(myrect.origin.x, myrect.origin.y + myrect.size.height * 1.0);

CGContextDrawLinearGradient(context, gradient, start, end, kCGGradientDrawsBeforeStartLocation);

CGContextRestoreGState(context);