繁体   English   中英

iPhone在多边形内绘制渐变

[英]iphone Drawing gradient inside a polygon

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM