首页 > ios > Quartz2D两色线性径向渐变遮罩扇形

Quartz2D两色线性径向渐变遮罩扇形

  因为昨天研究了《Xcode6之新特性IBInspectable&IBDesignable,今天就想搞一点更加深奥的喽。。。既然现在XIB支持的这么好我还是多学点画图吧。今天打算写一个:创建一个扇形遮罩,再创建一个两色径向渐变圆,用扇形遮罩去剪切径向渐变圆,就得到一个两色线性径向渐变扇形。

  写完了之后,直接上效果图;
扇形遮罩图

  最后还是直接上代码,最实惠:

- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGPoint p = CGPointMake(rect.size.width/2.0f, rect.size.height/2.0f);
    
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef imgCtx = UIGraphicsGetCurrentContext();
    CGContextMoveToPoint(imgCtx, p.x,p.y);
    CGContextSetFillColor(imgCtx, CGColorGetComponents([UIColor blackColor].CGColor));
    CGContextAddArc(imgCtx, p.x, p.y, p.x,  M_PI/2, -5*M_PI/4, 1);
    CGContextFillPath(imgCtx);
    //save the context content into the image mask
    CGImageRef mask = CGBitmapContextCreateImage(UIGraphicsGetCurrentContext());
    UIGraphicsEndImageContext();
    CGContextClipToMask(context, rect, mask);

    CGFloat components[8]={
        1.0f,0,0,1.0f,
        1.0f,245.0/255.0f,207.0/255.0f,1.0f      //end color
    };
    CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
    CGGradientRef gradient = CGGradientCreateWithColorComponents(space, components, NULL,2);
    
    CGContextDrawRadialGradient(context, gradient, p, 0.0f, p, p.x, 0);
    CGColorSpaceRelease(space);
    
    CGContextClosePath(context);
    CGContextFillPath(context);
}
  1. 还没有评论
评论提交中, 请稍候...

留言


可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks