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度,这样,就可以根据比例来算初始位置和大小了。

原文地址:https://www.cnblogs.com/SimonGao/p/5034924.html