1、Quartz 2D是一种二维绘图库,它与iphone OS紧密结合在一起,能协同所有相关框架进行工作,包括Core Animation、OpenGL ES和UIKit。
2、Quartz的绘图功能取决与3个核心概念:上下文、路径和状态。
①上下文(context):用户描述将图形写入哪里,该过程由CGContextRef定义。通常,可以写入UIView或位图中。
②路径:路径是那些经常在Quartz中绘制的内容。起初,他们是线段和弧的集合,随后通过描边或填充的方式绘制到屏幕中。
③状态:状态用于保存变换值、裁剪路径、填充和描边设置、alpha值、其他混合模式、文本特征等。可以用CGContextSaveGState存储当前状态,是有那个CGContextRestoreGStete恢复当前状态,这样就能在复杂绘图设置间轻松地进行切换。
3、常用的类
CGContextAddArc的使用
这个函数让我在纸上画了半天才搞明白,把我的理解给大家分享下。
void CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)
CGContextRef不解释了,x,y为圆点坐标,startAngle为开始的弧度,endAngle为 结束的弧度,clockwise 0为顺时针,1为逆时针。
CGContextAddArc(context, 160, 200, 100, 0, 45*(M_PI/180), 0);
所以对上面这对代码的解释是这样的:
1)startAngle为0,绿色箭头的地方。
2)endAngle为45,黄色箭头的地方。
3)clockwise为0,按照红色箭头往下绘制图形。
4)所以效果就是红色的扇形。
补充:如果clockwise为1,则是蓝色部分区域。
4、实例画圆
- (void)viewDidLoad {
[super viewDidLoad];
/*
BaseView *view = [[BaseView alloc] initWithFrame:CGRectMake(10, 20, 300, 300)];
[self.view addSubview:view];
*/
UIGraphicsBeginImageContext(CGSizeMake(20, 20)); //创建图形上下文
CGContextRef context = UIGraphicsGetCurrentContext(); //返回当前上下文,通常指当前UIKit对象中的上下文,但也可能是手工创建的上下文
CGContextSetRGBFillColor(context, 1, 0, 0, 1.0);
CGContextBeginPath(context); //创建新路径
CGContextAddArc(context, 10, 10, 10, 0,2*M_PI, 1);
CGContextFillPath(context); //结束路径
UIImage *redBall = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *redBallView = [[UIImageView alloc] initWithImage:redBall];
// redBallView.frame = CGRectMake(20, 20, 400, 400);
redBallView.center = CGPointMake(160, 330);
[self.view addSubview:redBallView];
}