CGPathAddArc & CGPathAddArcToPoint

参考:http://blog.csdn.net/xcysuccess3/article/details/24001571

CGPathAddArc

注意:由于iOS中的坐标体系是和Quartz坐标体系中Y轴相反的,所以iOS UIView在做Quartz绘图时,Y轴已经做了Scale为-1的转换,因此造成CGPathAddArc函数最后一个是否是顺时针的参数结果正好是相反的,也就是说如果设置最后的参数为YES,根据参数定义应该是顺时针的,但实际绘图结果会是逆时针的。

其实Quartz 2D的坐标系同UIKit并不一样,它的坐标原点在屏幕左下方,但是为了统一编程方式,UIKit对其进行了转换,坐标原点统一在屏幕左上角。

where the red line is what will be drawn, sA is startAngle, eA is the endAngle, r is radius, and x and y are x and y. If you have a previous point the function will line from this point to the start of the arc (unless you are careful this line won‘t be going in the same direction as the arc).

CGPathAddArcToPoint

Where P1 is the current point of the path, the x1, x2, y1, y2 match the functions x1x2y1y2 and r is radius. The arc will start in the same direction as the line between the current point and (x1, y1)and end in the direction between (x1, y1) and (x2, y2). it won‘t line to (x2, y2) It will stop at the end of the circle.

时间: 2024-12-24 21:10:09

CGPathAddArc & CGPathAddArcToPoint的相关文章

CGPathAddArc vs CGPathAddArcToPoint

CGContextAddArc : 红线是我们想要画的, sA 是startAngle, eA 为 endAngle, r 是半径, x 和 y 对应参数中的 x 和 y. 如果有前置点,方法将画一条从该点到狐的起点,除非你非常小心,不然这条线不会和弧线同一个方向. CGContextAddArcToPoint : P1是path的当前点,x1, x2, y1, y2 对应方法中 x1, x2, y1, y2,r 为半径.弧线将开始于当前点和(x1,y1)组成的直线并结束于(x1,y1)和(x2

iOS Quartz: CGPathAddArc和CGPathAddArcToPoint函数

CGPathAddArc函数是通过圆心和半径定义一个圆,然后通过两个弧度确定一个弧线.注意弧度是以当前坐标环境的X轴开始的. 需要注意的是由于iOS中的坐标体系是和Quartz坐标体系中Y轴相反的,所以iOS UIView在做Quartz绘图时,Y轴已经做了Scale为-1的转换,因此造成CGPathAddArc函数最后一个是否是顺时针的参数结果正好是相反的,也就是说如果设置最后的参数为YES,根据参数定义应该是顺时针的,但实际绘图结果会是逆时针的! 比如,我们设置起点弧度为0,终点弧度为1.5

ios开发日记 10- CGPathAddArc和CGPathAddArcToPoint函数

http://www.cnblogs.com/mgen/p/3426303.html 注意:CGPathAddArc和CGContextAddArc,以及UIBezierPath类型的addArcWithCenter:radius:startAngle:endAngle:clockwise:方法原理都类似.而CGPathAddArcToPoint和CGContextAddArcToPoint函数则原理类似.只不过CGPath相关的函数多了一个CGAffineTransform参数,可以直接应用T

CGPathAddArc

使用CGPathAddArc使UIView的Layer绕中心点旋转 2012-12-04 15:38 775人阅读 评论(0) 收藏 举报 animationAnimationiosiOSIOSlayerpathPATHPathuiviewUIViewUIVIew [plain] view plaincopy float angle = 360 / 6; for (int i = 0; i < 6; i++) { UIButton *button = [UIButton buttonWithTy

OS: 剪裁UIImage部分不规则区域

首先,我们需要把图片展示在界面上.很简单的操作,唯一需要注意的是由于CGContextDrawImage会使用Quartz内以左下角为(0,0)点的坐标系,所以需要使用CGContextTranslateCTM函数和CGContextScaleCTM函数把以左下角为0点的坐标系转化成左上角形式的坐标系. ViewController中的代码: //ViewController中的viewDidLoad方法- (void)viewDidLoad { //从Bundle中读取图片 UIImage *

iOS开发CoreGraphics核心图形框架之一——CGPath的应用

一.引言 CoreGraphics核心图形框架相较于UIKit框架更加偏于底层.在Objective-C工程中,CoreGraphics其中方法都是采用C语言风格进行编写的,同时其并不支持Objective-C的自动引用计数,在使用这个框架进行编程时,开发者要手动对内存进行管理.在Swift工程中,Apple使用Swift语言对CoreGraphics矿建进行了重构,将CGPath,CGMutablePaht等都重新定义为了类.CGPath可以理解为图形的路径,在Objective-C工程中,其

UIKit框架(17)Quartz2D

Quartz2D介绍 什么是Quartz2D ? 是一个二维绘图引擎,同时支持iOS和Mac系统. Quartz2D的价值? 但是有些UI界面极其复杂,而且比较个性化,用普通的UI控件无法实现,这时可以利用Quartz2D技术将控件内部的结构画出来,自定义控件的样子. 其实,iOS中大部分控件的内容都是由Quartz2D画出来的 (有一些是通过WebKit渲染的) 开发方式? 使用框架CoreGraphics Quartz2D是一套C语言API,但使用了面向对象的开发方式 图像上下文对象: 是最

Quartz 2D

1.什么是Quart 2D呢? 不知道,但是可以通过Quart2D绘制图形,自定义控件等等. 2.如何通过Quart 2D绘制图形和自定义控件? 有两种方式:C语言/OC;OC其实最后还是转换成C,那么用C会不会效率稍高? 3.基本图形的绘制 C语言方式 获取当前图形上下文 : CGContextRef ctx = UIGraphicsGetCurrentContext(); 绘制图形: 圆:CGContextRef _Nullable c:图形上下文; CGFloat x, CGFloat y

CoreGraphics--饼状图

//传入数据,饼状图 pieChartView.dataArr = @[@20,@50,@80,@70,@40]; - (void)drawRect:(CGRect)rect { // Drawing code #if 0 //贝塞尔路径 UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(50, 50, 100, 100)]; //Oval 椭圆 //线条颜色 [[UIColor redColor] se