您的位置:首页 > 运维架构

CGContextAddArcToPoint用法

2015-05-21 15:41 537 查看
看MBProgress的源码,突然发现CGContextAddArcToPoint这个方法之前没用过:

[code]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方法示例:

[code]    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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: