美文网首页iOS
Quartz2D 基础

Quartz2D 基础

作者: 习惯了_就好 | 来源:发表于2019-06-30 20:07 被阅读0次
    void drawLine(){
        NSLog(@"--------------------------------画线段--------------------------------");
        //获取图形上下文对象
        CGContextRef context = UIGraphicsGetCurrentContext();
        //设置起点
        CGContextMoveToPoint(context, 10, 10);
        //添加线段至某一点
        CGContextAddLineToPoint(context, 100, 100);
        //设置颜色
        [[UIColor redColor] setStroke];
        //设置线的粗细
        CGContextSetLineWidth(context, 10);
        //设置线的端点形状
        CGContextSetLineCap(context, kCGLineCapRound);
        //渲染显示到view上
        CGContextStrokePath(context);
    }
    
    void drawTriangle(){
        NSLog(@"--------------------------------画三角--------------------------------");
        //获取图形上下文对象
        CGContextRef context = UIGraphicsGetCurrentContext();
        //设置起点
        CGContextMoveToPoint(context, 10, 10);
        //添加线段至某一点
        CGContextAddLineToPoint(context, 100, 100);
        
        CGContextAddLineToPoint(context, 150, 50);
        
        CGContextSetLineWidth(context, 10);
        
        //
        [[UIColor redColor] setFill];
        
        //封闭路径
        CGContextClosePath(context);
        
        //渲染显示到view上
        CGContextFillPath(context);
        
        
        [[UIColor blueColor] setStroke];
        CGContextStrokePath(context);
    }
    
    void drar4Rect()
    {
        NSLog(@"--------------------------------画四边形--------------------------------");
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextAddRect(context, CGRectMake(10, 10, 30, 100));
        
    //    CGContextSetLineJoin(context, kCGLineJoinRound);
        CGContextSetLineWidth(context, 10);
        [[UIColor blueColor] setStroke];
        CGContextStrokePath(context);
    
        
    //    CGContextAddRect(context, CGRectMake(10, 10, 30, 100));
    //    [[UIColor redColor] setFill];
    //    CGContextFillPath(context);
        
    }
    
    void drawArc()
    {
        NSLog(@"--------------------------------画圆弧--------------------------------");
        CGContextRef context = UIGraphicsGetCurrentContext();
        /**
         上下文
         x坐标
         y坐标
         半径
         起始角度
         结束角度
         0顺时针  1逆时针
         
         x轴正向为0度,y轴x向下为90度,x轴反向为180度,y轴向上为270度
         */
        CGContextAddArc(context, 100, 100, 20, 0, M_PI_2, 0);
        CGContextStrokePath(context);
    }
    
    void drawCircle()
    {
        NSLog(@"--------------------------------画圆--------------------------------");
        
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextAddEllipseInRect(context, CGRectMake(100, 100, 60, 60));
        CGContextStrokePath(context);
    }
    
    void drawsquCircle(){
        NSLog(@"--------------------------------画1/4圆--------------------------------");
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGContextMoveToPoint(context, 100, 100);
        CGContextAddLineToPoint(context, 100, 130);
        CGContextAddArc(context, 100, 100, 30, M_PI_2, 0, 1);
        CGContextClosePath(context);
        //画边
        CGContextStrokePath(context);
        //画内部
    //    CGContextFillPath(context);
    }
    
    void drawText(){
        NSLog(@"--------------------------------画文本-------------------------------");
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGRect rect = CGRectMake(20, 20, 100, 100);
        CGContextAddRect(context, rect);
        CGContextFillPath(context);
        
        NSString * str = @"画出来点文本";
        NSMutableDictionary * dic = [NSMutableDictionary dictionary];
        //设置文本字体大小
        dic[NSFontAttributeName] = [UIFont systemFontOfSize:14];
        //设置文本颜色
        dic[NSForegroundColorAttributeName] = [UIColor redColor];
        //在矩形范围内画文本
        [str drawInRect:rect withAttributes:dic];
    }
    
    void drawImage(){
        NSLog(@"--------------------------------画图片-------------------------------");
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGRect rect = CGRectMake(0, 0, 240, 240);
        [[UIColor redColor] set];
        CGContextAddRect(context, rect);
        CGContextFillPath(context);
        
        UIImage * image = [UIImage imageNamed:@"me"];
        
    //    绘制一次,按矩形大小去绘制图片
    //    [image drawInRect:rect];
        //重复绘制
        [image drawAsPatternInRect:rect];
    }
    
    void drawTextAndImage(){
        NSLog(@"--------------------------------画图片和文本-------------------------------");
        CGContextRef context = UIGraphicsGetCurrentContext();
        CGRect rect = CGRectMake(5, 5, 200, 200);
        CGContextAddRect(context, rect);
        CGContextFillPath(context);
        
        //画图片
        UIImage * image = [UIImage imageNamed:@"me"];
        [image drawInRect:rect];
        
        //画文本
        NSString * str = @"画出来点文本";
        NSMutableDictionary * dic = [NSMutableDictionary dictionary];
        //设置文本字体大小
        dic[NSFontAttributeName] = [UIFont systemFontOfSize:14];
        //设置文本颜色
        dic[NSForegroundColorAttributeName] = [UIColor redColor];
        //在矩形范围内画文本
    //    [str drawInRect:rect withAttributes:dic];
        [str drawInRect:CGRectMake(150 , 150, 200, 200) withAttributes:dic];
        
    }
    
    void drawQuadCurve(CGContextRef context ,CGRect rect){
        NSLog(@"--------------------------------画贝塞尔曲线-------------------------------");
        //控制点
        CGFloat controlX = rect.size.width * 0.5;
        CGFloat controlY = rect.size.height * 0.4;
        
        //开始点
        CGFloat leftMargin = 30;
        CGFloat startX = controlX - leftMargin;
        CGFloat startY = controlY - 20;
        CGContextMoveToPoint(context, startX, startY);
        
        //结束点
        CGFloat endX = controlX + leftMargin;
        CGFloat endY = startY;
        
        //画贝塞尔曲线
        CGContextAddQuadCurveToPoint(context, controlX, controlY, endX, endY);
        
        //
        CGContextStrokePath(context);
    }
    

    相关文章

      网友评论

        本文标题:Quartz2D 基础

        本文链接:https://www.haomeiwen.com/subject/skticctx.html