【ios系列】-Quartz 2D常用方法介绍

Quartz 2D基本介绍

Quartz 2D是一个二维绘图引擎
能够,绘制图形 : 线条\三角形\矩形\圆\弧等,绘制文字,绘制\生成图片(图像),读取\生成PDF,截图\裁剪图片,自定义UI控件(最为重要)等,

利用Quartz2D自定义view(自定义UI控件)的步骤

1:新建一个类,继承自UIView

2:实现- (void)drawRect:(CGRect)rect方法(系统会自动调用),然后在这个方法中:

      1:取得跟当前view相关联的图形上下文
      2:绘制相应的图形内容
      3:利用图形上下文将绘制的所有内容渲染显示到view上面

使用步骤:

1:获得图形上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();

2:拼接路径(下面代码是搞一条线段)
CGContextMoveToPoint(ctx, 10, 10);
CGContextAddLineToPoint(ctx, 100, 100);

3:绘制路径
CGContextStrokePath(ctx);//空心
// CGContextFillPath(ctx);//实心

常用的方法:

新建一个起点
void CGContextMoveToPoint(CGContextRef c, CGFloat x, CGFloat y)

添加新的线段到某个点
void CGContextAddLineToPoint(CGContextRef c, CGFloat x, CGFloat y)

添加一个矩形
void CGContextAddRect(CGContextRef c, CGRect rect)

添加一个椭圆
void CGContextAddEllipseInRect(CGContextRef context, CGRect rect)

添加一个圆弧,规则圆弧
//x\y:圆心
//radius:半径
//startAngle:开始角度
//endAngle:结束角度
//clockwise:圆弧的伸展方向,0 :顺时针,1:逆时针
void CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y,
CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)

贝塞尔曲线,不规则曲线
CGContextAddQuadCurveToPoint(CGContextRef c, CGFloat cpx, CGFloat cpy, CGFloat x, CGFloat y)

合并路径,连接两个点
CGContextClosePath(ctx);


设置颜色
[[UIColor blackColor] set];

设置线条宽度
CGContextSetLineWidth(ctx, 10);

将当前的上下文copy一份,保存到栈顶(那个栈叫做”图形上下文栈”)
void CGContextSaveGState(CGContextRef c)

将栈顶的上下文出栈,替换掉当前的上下文
void CGContextRestoreGState(CGContextRef c)

用view的setNeedsDisplay或者setNeedsDisplayInRect:时会重新调用drawRect:方法
posted @ 2015-03-21 19:29  Darren.Von  阅读(571)  评论(1编辑  收藏  举报
新浪微博:IT_攻城师,github:darren90(欢迎★star点赞)