首页 > 代码库 > Quartz 2D简介

Quartz 2D简介

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];

}

 

 

Quartz 2D简介