IOS--Quartz2D绘图

使用quartz2D绘制图形的步骤 :   

     1.获取绘制的对象(上下文)(画布、纸)

     2.设置绘制的路径

     3.将路径添加到绘制的对象(上下文)

     4.设置绘制的属性:线条的颜色、线条的宽度、裁减区域  context

     5.绘制

     (6.释放路径)如果路径通过creat创建的就需要释放

绘制线条

    //1.获取绘制的对象(上下文)(画布、纸)
    CGContextRef context = UIGraphicsGetCurrentContext();
   
   
   第一种绘制方法
    //2.设置绘制的路径
    CGMutablePathRef path = CGPathCreateMutable();
    //设置路径的起始点
    CGPathMoveToPoint(path, NULL, 50, 50);
    
    //添加目标点
    CGPathAddLineToPoint(path, NULL, 200, 200);
    
    //添加目标点
    CGPathAddLineToPoint(path, NULL, 50, 200);
    
    //添加目标点
    //    CGPathAddLineToPoint(path, NULL, 50, 50);
    
    //关闭路径
    CGPathCloseSubpath(path);
    
    //3.将路径添加到绘制的对象(上下文)
    CGContextAddPath(context, path);
    
    //4.设置绘制的属性:线条的颜色、线条的宽度、裁减区域
    //设置绘制的线条颜色
    CGContextSetRGBStrokeColor(context, 5/255.0, 128/255.0, 0, 1);
    //设置填充色
    CGContextSetRGBFillColor(context, 22/255.0, 142/255.0, 242/255.0, 1);
    
    //设置线条的宽度
    CGContextSetLineWidth(context, 3);
    
    //5.绘制
    /*
     kCGPathFill,  只绘制填充
     kCGPathStroke,  绘制线条
     kCGPathFillStroke, 填充和线条
     */
    CGContextDrawPath(context, kCGPathFillStroke);
    
    //6.释放路径
    CGPathRelease(path);
    
    
    
    第二种绘制方法
    //2.设置绘制的路径
    CGPoint p1 = CGPointMake(50, 50);
    CGPoint p2 = CGPointMake(200, 50);
    CGPoint p3 = CGPointMake(200, 200);
    CGPoint p4 = CGPointMake(50, 200);
    CGPoint p5 = p1;
    
    CGPoint pointArray[] = {p1,p2,p3,p4,p5};
    
    //将点放到路径中
    CGContextAddLines(context, pointArray, 5);
    
    //4、设置绘制的属性
//    //设置线条的颜色
//    CGContextSetRGBStrokeColor(context, 1, 1, 1, 1);
//    //设置填充色
//    CGContextSetRGBFillColor(context, 43/255.0, 131/255.0, 160/255.0, 1);
    
    //使用UIKit中设置颜色的方法
//    [[UIColor redColor] setStroke];
//    [[UIColor blueColor] setFill];
    //设置线条和填充色都是这个颜色
//    [[UIColor redColor] set];
    
    //5、绘制
    CGContextDrawPath(context, kCGPathEOFillStroke);


绘制矩形

 

 //1.获取绘制的对象(上下文)(画布、纸)
    CGContextRef context = UIGraphicsGetCurrentContext();
    
        
    CGRect rect = CGRectMake(40, 40, 100, 100);
    
    //在上下文上添加矩形
    CGContextAddRect(context, rect);
    
    //设置线条的颜色
    [[UIColor greenColor] setStroke];
    //设置填充色
    [[UIColor redColor] setFill];
    
    //设置线条的宽度
    CGContextSetLineWidth(context, 10);
    
    //设置连接点得样式
    CGContextSetLineJoin(context, kCGLineJoinRound);
    
    //绘制
    CGContextDrawPath(context, kCGPathFillStroke);
    
    
    
    //使用UI绘制矩形
    CGRect rect1 = CGRectMake(90, 50, 200, 200);
    
    [[UIColor redColor] setStroke];
    [[UIColor greenColor] setFill];
    
    //如果设置,则UIRectFrame绘制线条和填充
    UIRectFillUsingBlendMode(rect1, kCGBlendModeCopy);
    
    //绘制矩形框(线条)
    UIRectFrame(rect1);
    //绘制填充图形
//    UIRectFill(rect);


绘制圆形

   
    //1.获取绘制的对象(上下文)(画布、纸)
    CGContextRef context = UIGraphicsGetCurrentContext();

    //在上下文中添加圆
    /*
     x,y表示圆心
     radius:半径
     startAngle:起始角度
     endAngle:结束角度  注角度的正负
     clockwise:绘制的方向  1:逆时针  0:顺时针
     */
    CGContextAddArc(context, 150, 150, 100, 0, 2*M_PI, 1);
    
    //设置线条的颜色
    [[UIColor orangeColor] setStroke];
    [[UIColor greenColor] setFill];
    
    CGContextDrawPath(context, kCGPathFillStroke);
    */
    
    //绘制椭圆
    CGRect rect = CGRectMake(30, 30, 200, 100);
    
    
    //绘制矩形
//    UIRectFrame(rect);
    CGContextAddEllipseInRect(context, rect);
    
    CGContextSetRGBStrokeColor(context,43/255.0, 131/255.0, 160/255.0, 1);
    
    //绘制
    CGContextDrawPath(context, kCGPathStroke);

绘制贝塞尔曲线

    
    //1.获取绘制的对象(上下文)(画布、纸)
    CGContextRef context = UIGraphicsGetCurrentContext();

    //设置起始点
    CGContextMoveToPoint(context, 20, 200);
    
    //添加曲线
//    CGContextAddCurveToPoint(context, 100, 20, 120, 300, 300, 50);
    
    CGContextAddQuadCurveToPoint(context, 150, 20, 300, 200);
    
    //绘制
    CGContextDrawPath(context, kCGPathStroke);

绘制图片

//1.获取绘制的对象(上下文)(画布、纸)
    CGContextRef context = UIGraphicsGetCurrentContext();
    
        //UIKit提供的多种方式
    //方式一:指定绘制的初始点,绘制的大小有图片决定(图片的原尺寸)
    [img drawAtPoint:CGPointMake(30, 30)];
    //方式二:指定绘制的位置和大小,图片会在矩形区域中填充
    [img drawInRect:CGRectMake(30, 30, 100, 200)];
    //方式三:保证图片的原尺寸的前提下,平铺视图
    [img drawAsPatternInRect:CGRectMake(30, 30, 100, 200)];
    
    //保存以前的状态
    CGContextSaveGState(cotext);
    
    //缩放y轴
    CGContextScaleCTM(cotext, 1, -1);
    //平移
    CGContextTranslateCTM(cotext, 0, -200);
    
    
    
    //使用Core Graphic方法绘制图片
    CGContextDrawImage(cotext, CGRectMake(0, 0, 200, 200), img.CGImage);
    
    //恢复
    CGContextRestoreGState(cotext);


绘制文字

图片
//1.获取绘制的对象(上下文)(画布、纸)
    CGContextRef context = UIGraphicsGetCurrentContext();
        //绘制的内容
    NSString *text = @"我就是我,是颜色不一样的烟火";
    
    //设置绘制的区域
    CGRect rect = CGRectMake(30, 90, 20, 500);
    
    UIRectFrame(rect);
    
    NSDictionary *dic = @{
                          NSFontAttributeName:[UIFont systemFontOfSize:18],
                          NSForegroundColorAttributeName:[UIColor orangeColor]
                          };
    //注意:使用此方法绘制文字的时候,字体的颜色使用字典设置
    [text drawInRect:rect withAttributes:dic];
    
    //设置线条
//    [[UIColor redColor] set];
    
//    [text drawInRect:rect withFont:[UIFont systemFontOfSize:18] lineBreakMode:NSLineBreakByWordWrapping];


你可能感兴趣的:(IOS--Quartz2D绘图)