Quartz2D 之 简单使用
1. 获取Graphics Context
CGContextRef ctx = UIGraphicsGetCurrentContext();
2. 最后的渲染接口
CGContextStrokePath(ctx);//渲染空心图形,但线条没有空心直说,只有宽度 CGContextFillPath(ctx);//渲染实心图形,如圆、矩形等。
3. 基本接口
3.1. 基本图形接口
3.1.1. 颜色设置
//第一种颜色设置 CGContextSetRGBStrokeColor(ctx, 1.0, 0.7, 0.3, 1.0); //第二种颜色设置 CGContextSetRGBFillColor(ctx, 1.0, 0.7, 0.3, 1.0); //第三种设置颜色的方式:同时设置空心颜色和实心颜色 [[UIColor grayColor] set] //第四种颜色设置 实心颜色 [[UIColor grayColor] setFill] //第五种颜色设置 空心颜色 [[UIColor grayColor] setStroke] //第六种颜色设置 [[UIColor colorWithRed:1.0 green:0 blue:0 alpha:1.0] set];
3.1.2. 直线
// 设置起点 CGContextMoveToPoint(ctx, 20, 100); // 设置终点 CGContextAddLineToPoint(ctx, 300, 100); //关闭起点和终点 CGContextClosePath(ctx);
直线属性:
//设置线条的宽度 CGContextSetLineWidth(ctx, 10); //设置线条起点和终点的样式为圆角 CGContextSetLineCap(ctx, kCGLineCapRound); //设置线条的转角的样式为圆角 CGContextSetLineJoin(ctx, kCGLineJoinRound);
3.1.3. 矩形
CGContextAddRect(ctx, CGRectMake(20, 20, 150, 100));
3.1.4. 圆
//圆 CGContextAddArc(ctx, 100, 100, 50, 0, 2 * M_PI, 0); //椭圆 CGContextAddEllipseInRect(ctx, CGRectMake(50, 100, 50, 50));
3.1.5. 圆弧
第一种方式,跟画圆一样,只是弧度大小小于 2*M_PI, 一个M_PI是180度。
CGContextAddArc(CGContextRef _Nullable c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise) //参数分别为:Graphics Context, 圆心X轴,圆心Y轴,半径,起始弧度,结束弧度,顺/逆时针
空心绘制时需要封口。
3.1.6. 饼状图
饼状图由两条线,和一个没有封口的圆弧组成。或者实现起来由一条线,一个圆弧,然后封口组成。注意的是,圆弧的圆心和线的起点是同一个点。
// 画线 CGContextMoveToPoint(ctx, 100, 100); CGContextAddLineToPoint(ctx, 100, 150); // 画圆弧 CGContextAddArc(ctx, 100, 100, 50, M_PI_2, M_PI, 0); // 关闭路径 CGContextClosePath(ctx);
M_PI对应的弧度是180度,这样,就可以根据比例来算初始位置和大小了。