CGContextAddArcToPoint和CGContextAddArc



[plain]  view plain  copy
  1. CGContextRef context=UIGraphicsGetCurrentContext();  
  2. CGContextSetRGBStrokeColor(context,1,0,0,1);  
  3. CGContextMoveToPoint(context,150,50);  
  4. CGContextAddLineToPoint(context,100,80);  
  5. CGContextAddLineToPoint(context,130,150);  
  6.   
  7. CGContextMoveToPoint(context,150,50);//圆弧的起始点  
  8. CGContextAddArcToPoint(context,100,80,130,150,50);  
  9. CGContextStrokePath(context);  


CGContextAddArcToPoint :    从move的起点 到 (100, 80) 的一条线 和 (100, 80 )到(130, 150)的线 以及一个半径, 从而可以获得一个圆弧;


CGContextAddArc(context, 100, 100, 30, 0, M_PI, 1);

比较简单了,(100,100)为圆心的坐标,30为半径,(0M_PI)为起始角度和结束角度,1为顺时针,为逆时针


看看下面的:




方法有二:

1.一笔一笔的画个

    CGContextSetLineWidth(content, 2.0f);

    [[UIColor colorWithRed:0.3 green:0.3 blue:0.3 alpha:0.8] setFill];

    CGRect  rect=self.bounds;

    CGFloat radius= 6.0;

    

    CGFloat minx=CGRectGetMinX(rect);

    CGFloat midx=CGRectGetMidX(rect);

    CGFloat maxx=CGRectGetMaxX(rect);

    CGFloat miny=CGRectGetMinY(rect);

    CGFloat  maxy=CGRectGetMaxY(rect) - kArrorHeight ;

    

    CGContextMoveToPoint(content, midx + kArrorHeight, maxy);

    CGContextAddLineToPoint(content, midx  , maxy + kArrorHeight);

    CGContextAddLineToPoint(content, midx - kArrorHeight, maxy);


    CGContextAddArcToPoint(content, minx, maxy, minx, miny, radius);

    CGContextAddArcToPoint(content, minx, miny, maxx, miny, radius);

    CGContextAddArcToPoint(content, maxx, miny, maxx, maxy, radius);

    CGContextAddArcToPoint(content, maxx, maxy,midx + kArrorHeight, maxy, radius);

    CGContextClosePath(content);

    

    CGContextFillPath(content);


2.   利用  UIBezierPath 画一个圆角矩形和三角形  搞定!

   CGContextRef content=UIGraphicsGetCurrentContext();

    

    CGContextSetLineWidth(content, 2.0f);

    [[UIColor colorWithRed:0.3 green:0.3 blue:0.3 alpha:0.8] setFill];

    

    CGContextMoveToPoint(content, 0, 0);

    CGFloat radius= 6.0;

    CGFloat minx=CGRectGetMinX(rect);

    CGFloat midx=CGRectGetMidX(rect);

    CGFloat maxx=CGRectGetMaxX(rect);

    CGFloat miny=CGRectGetMinY(rect);

    CGFloat  maxy=CGRectGetMaxY(rect) - kArrorHeight ;

    

    UIBezierPath *path=[UIBezierPath bezierPathWithRoundedRect:CGRectMake(minx, miny, maxx, maxy) cornerRadius:radius];

    

     CGContextAddLineToPoint(content, midx + kArrorHeight, maxy);

     CGContextAddLineToPoint(content, midx , maxy+ kArrorHeight);

     CGContextAddLineToPoint(content, midx- kArrorHeight , maxy);

     

     //CGContextClosePath(path);

     CGContextAddPath(content, path.CGPath);

     [path fill];

    







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值