OC 绘制直线、矩形和圆

一、绘制直线、线段
#pragma mark 绘制直线
- (void)drawLine{

    //获取上下文
    CGContextRef contextRef = UIGraphicsGetCurrentContext();

    //创建路径,并设置为可变路径
    CGMutablePathRef mutablePath = CGPathCreateMutable();

    /*
     *设置路径上的点
     *设置路径的起始点
     *mutablePath 需要添加起始点的可变路径
     *还有transform 坐标系的变化
     **/
    CGPathMoveToPoint(mutablePath, NULL, 50, 50);

    /*
     *向路径中添加点
     */
    CGPathAddLineToPoint(mutablePath, NULL, 106, 100);
    CGPathAddLineToPoint(mutablePath, NULL, 222, 140);
    CGPathAddLineToPoint(mutablePath, NULL, 100, 200);
    CGPathAddLineToPoint(mutablePath, NULL, 250, 50);
    CGPathAddLineToPoint(mutablePath, NULL, 50, 190);

    /*
     *封闭路径,将起点和终点连接起来
     **/
    CGPathCloseSubpath(mutablePath);

    /*设置绘制的属性*
     *1.线条分段的颜色
     *2.设置图形的填充颜色
     *3.设置线条的宽度
     *4.设置线条分段连接点的样式
     **/
    CGContextSetStrokeColorWithColor(contextRef, [UIColor greenColor].CGColor);
    CGContextSetFillColorWithColor(contextRef, [UIColor cyanColor].CGColor);
    CGContextSetLineWidth(contextRef, 2);
    CGContextSetLineJoin(contextRef, kCGLineJoinRound);

    /*开始绘制路径
     *1.将创建好的路径添加到上下文中
     *2.在上下文中绘制已经添加的路径
     *<#CGPathDrawingMode mode#> 绘制模式
     **/
    CGContextAddPath(contextRef, mutablePath);
    CGContextDrawPath(contextRef, kCGPathFillStroke);

    /*
     *最后销毁create函数创建的变量,因为在CG框架中,所有使用create函数创建的变量都需要手动来销毁
     */
    CGPathRelease(mutablePath);

}

绘制直线的另一种方式

- (void)drawLineWay2{

    /*
     *创建需要绘制的区域*/
    CGRect rect = self.frame;

    /*
     *将rect添加到图形上下文中
     */
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextAddRect(context, rect);

    /*
     *设置颜色、宽度
     */
    [[UIColor redColor] setFill];
    [[UIColor yellowColor] setStroke];
    CGContextSetLineWidth(context, 100);
    CGContextDrawPath(context, kCGPathFillStroke);

}

二、绘制圆形
    CGContextRef contextRef = UIGraphicsGetCurrentContext();

    /*
     *参数说明
     *<#CGContextRef  _Nullable c#> 上下文
     *<#CGFloat x#> 和 <#CGFloat y#> 圆心坐标
     *<#CGFloat radius#> 半径
     *<#CGFloat startAngle#> 和 <#CGFloat endAngle#> 开始和结束的角度,0度在x轴的正方向,角度沿顺时针方向增大
     *<#int clockwise#> 绘制的方向,1表示逆时针绘制,0表示顺时针绘制
     */

    CGContextAddArc(contextRef, 180, 300, 100, 0, M_PI*2, 0);
    [[UIColor orangeColor] setStroke];//
    [[UIColor purpleColor] setFill];;//填充颜色
    CGContextSetLineWidth(contextRef, 10);
    CGContextDrawPath(contextRef, kCGPathFillStroke);

三、绘制矩形
- (void)drawRectangle{
    /*
     *创建一个矩形区域
     */
    CGRect rect = CGRectMake(50, 50, 100, 61.8);

    /*
     *将rect添加到图形上下文中
     */
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextAddRect(context, rect);

    /*
     *设定颜色,开始绘制
     */
    [[UIColor redColor] setFill];
    [[UIColor yellowColor] setStroke];
    CGContextSetLineWidth(context, 3);
    CGContextDrawPath(context, kCGPathFillStroke);
}

稍后再练习绘制文字和图片

你可能感兴趣的:(OC 绘制直线、矩形和圆)