好久没有写学习的文章了,最近的事情比较多,忙着装修,忙着工作赶进度(其实就是懒),最近呢,忙完了项目。准备写这篇Quart2D绘图的文章。
借鉴学习材料来自[CoderZb] ###侵删
首先介绍一下Quartz2D是啥? [Quartz 2D Programming Guide]
Quartz2D是⼀个二维绘图引擎,同时支持iOS和Mac系统 Quartz2D的API是纯C语⾔言的Quartz2D的API来自于Core Graphics框架 主要用到的是 CGContextRef(Quartz 2D绘图环境)以及UIBezierPath(Quartz 2D绘图手段:由直线和曲线线段组成的路径,在自定义视图中呈现这些线段)
常见的画图方式
1画直线
-(void)drawRect:(CGRect)rect
{
///画直线
//获取上线文
CGContextRef ctx = UIGraphicsGetCurrentContext();
//描述路径
UIBezierPath *path = [UIBezierPath bezierPath];
//设置起点
[path moveToPoint:CGPointMake(50, 150)];
//添加线到某一个点
[path addLineToPoint:CGPointMake(250, 50)];
// [path moveToPoint:CGPointMake(50, 250)];
[path addLineToPoint:CGPointMake(250, 100)];
//设置线宽
CGContextSetLineWidth(ctx, 15);
//设置线的连接方式
CGContextSetLineJoin(ctx, kCGLineJoinBevel);
//设置线的顶角样式
CGContextSetLineCap(ctx, kCGLineCapSquare);
//设置颜色
[[UIColor redColor] set];
//把描述路径添加的上下文中
CGContextAddPath(ctx, path.CGPath);
//把上下文当中绘制的内容渲染到跟view相关联的layer
CGContextStrokePath(ctx);
}

2画矩形(正方形是特殊的矩形)
///画矩形描边或者填充颜色
CGContextRef ctx = UIGraphicsGetCurrentContext();
UIBezierPath *path = [UIBezierPath bezierPathWithRect:CGRectMake(50, 50, 200, 200)];
CGContextAddPath(ctx, path.CGPath);
[[UIColor redColor] set];
//描边
CGContextStrokePath(ctx);
//填充
// CGContextFillPath(ctx);


3画扇形
///画扇形或者填充
//描述圆心位置
CGPoint center = CGPointMake(rect.size.width/2, rect.size.height/2);
//圆心半径
CGFloat radius = rect.size.width/2 ;
//开始角度
CGFloat startA = 0;
//结束角度
CGFloat endA = -M_PI_2;
/*
M_PI的含义:π
M_PI * 2的含义:2π
M_PI_2的含义:π/2
M_PI / 2的含义:π/2
// 画的图形路径
//bezierPathWithArcCenter:弧所在的圆心
//radius:圆的半径
//startAngle:开始角度,圆的最右侧为0度
//endAngle:截至角度,向下为正,向上为负.
//clockwise:时针的方向,yes:顺时针 no:逆时针
*/
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:NO];
[path addLineToPoint:center];
[path closePath];
[[UIColor redColor] set];
// [path fill];
[path stroke];

绘制一般的步骤基本是这样的
1 获取当前的上下文(这里只能获取一次,并且只能在drawRect方法中获取) 2 描述路径、形状(就是处理想要显示的样子) 3 把描述好的路径、形状添加早上下文中 4 显示上下文内容