CGContextAddArcToPoint用法

看MBProgress的源码,突然发现CGContextAddArcToPoint这个方法之前没用过:

void CGContextAddArcToPoint(CGContextRef c, CGFloat x1, CGFloat y1, CGFloat x2, CGFloat y2, CGFloat radius)

下图中,P1 是当前路径所在的点,坐标是(x,y)

P1(x,y)(x1,y1)构成切线1,(x1,y1)(x2,y2)构成切线2, r 是上面函数中的radius, 红色的线就是CGContextAddArcToPoint绘制的曲线. 它不会画到 (x2, y2)这个点, 绘制到圆弧的终点就会停止.

红色部分是绘制的部分
图片来自stackoverflow

MBProgressHUD中的drawRect方法示例:

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetLineWidth(context, 2);
    CGContextSetStrokeColorWithColor(context,[_lineColor CGColor]);
    CGContextSetFillColorWithColor(context, [_progressRemainingColor CGColor]);


    float radius = (rect.size.height / 2) - 2;
    // 画黑色圆角矩形背景,看看下面两行就行了,可以感受一下
    CGContextMoveToPoint(context, 2, rect.size.height/2);//呐,这个点呢,就相当于P1
    CGContextAddArcToPoint(context, 2, 2, radius + 2, 2, radius);//这两个点就分别对应(x1,y1)和(x2,y2)
    CGContextAddLineToPoint(context, rect.size.width - radius - 2, 2);//
    CGContextAddArcToPoint(context, rect.size.width - 2, 2, rect.size.width - 2, rect.size.height / 2, radius);
    CGContextAddArcToPoint(context, rect.size.width - 2, rect.size.height - 2, rect.size.width - radius - 2, rect.size.height - 2, radius);
    CGContextAddLineToPoint(context, radius + 2, rect.size.height - 2);
    CGContextAddArcToPoint(context, 2, rect.size.height - 2, 2, rect.size.height/2, radius);
    CGContextFillPath(context);

废话:看了N多博客,却没动手在网上写一篇,一直把自己的笔记做成rtf文档,因为实在没有一个博客能把图文和代码弄成自己理想的排版,今天试了下markdown文档,确实比较简洁,复制多行代码也不蛋疼了(不会把行标数字也一块复制过去),所以就先拿这篇练练手吧
经过测试,在CSDN上写的markdown文档,导出到本地后,里面插入的图片还是你上传的源文件(MD5值没变),而且用Mou查看效果还不错
戳我下载MacOS上好用的的markdown编辑器——Mou

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值