美文网首页
Quartz画图学习

Quartz画图学习

作者: 7dfa9c18c1d1 | 来源:发表于2016-04-26 18:20 被阅读22次
    • 绘图的步骤: 1.获取上下文 2.创建路径(描述路径) 3.把路径添加到上下文 4.渲染上下文

    • 通常在这个方法里面绘制图形

    • 为什么要再drawRect里面绘图,只有在这个方法里面才能获取到跟View的layer相关联的图形上下文

    • 什么时候调用:当这个View要显示的时候才会调用drawRect绘制图形,

    • 注意:rect是当前控件的bounds

    • 使用传统的方法画线

    - (void)drawRect:(CGRect)rect
    {
        // 获取上下文
        CGContextRef ctx = UIGraphicsGetCurrentContext();
        
        // 描述路径
        // 设置起点
        CGContextMoveToPoint(ctx, 0, 0);
        
        // cpx:控制点的x
        CGContextAddQuadCurveToPoint(ctx, 0, 0, self.bounds.size.width, self.bounds.size.height);
    
        // 渲染上下文
        CGContextStrokePath(ctx);
    }
    
    
    • 利用贝塞尔曲线画线
    - (void)method2
    {
        // 画从一个点到另外一个点的直线
        UIBezierPath *path = [UIBezierPath bezierPath];
        [path moveToPoint:CGPointMake(0, 0)];
        [path addLineToPoint:CGPointMake(self.bounds.size.width, self.bounds.size.height)];
        path.lineWidth = 2; // 线条的宽度
        [[UIColor redColor] set];
        [path stroke];
        
        UIBezierPath *path2 = [UIBezierPath bezierPath];
        [path2 moveToPoint:CGPointMake(self.bounds.size.width, 0)];
        [path2 addLineToPoint:CGPointMake(0, self.bounds.size.height)];
        path2.lineWidth = 2; // 线条的宽度
        [[UIColor redColor] set];
        [path2 stroke];
    }
    
    
    • 利用贝塞尔曲线画圆
    - (void)method3
    {
        // 利用贝塞尔曲线画圆
        // 创建贝瑟尔路径
        CGPoint center = CGPointMake(self.bounds.size.width * 0.5, self.bounds.size.height * 0.5);
        
        UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:100 startAngle:0 endAngle:M_PI*2 clockwise:YES];
        [[UIColor redColor] set];
        path.lineWidth = 2;
        
        [path stroke];
    }
    
    • 利用贝塞尔曲线画圆弧
    - (void)method4
    {
        // 画圆弧
        CGPoint center = CGPointMake(self.bounds.size.width * 0.5, self.bounds.size.height * 0.5);
        CGFloat radius = self.bounds.size.height * 0.5;
        CGFloat startA = 0;
        CGFloat endA = M_PI_4;
        // 画扇形
        UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:radius startAngle:startA endAngle:endA clockwise:YES];
        // 回到center点
        [path addLineToPoint:center];
        
        [[UIColor redColor] set];
        
        // [fill 底层会调用stroke];
        [path stroke];
        
        // 在画一条直线,把这个圆弧封闭住
        UIBezierPath *path2 = [UIBezierPath bezierPath];
        [path2 moveToPoint:center];
        [path2 addLineToPoint:CGPointMake(center.x+radius, center.y)];
        path2.lineWidth = 1; // 线条的宽度
        [[UIColor redColor] set];
        [path2 stroke];
    }
    
    

    注意:以上所有的方法都是在drawInRect方法中调用的

    相关文章

      网友评论

          本文标题:Quartz画图学习

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