美文网首页
如何画一个三角形

如何画一个三角形

作者: 夜的v | 来源:发表于2016-11-23 18:00 被阅读530次
    屏幕快照 2016-11-23 下午5.36.29.png

    画三角形和其他图形同理,这里主要介绍下画三角形。

    1️⃣.使用图形上下文:CGContextRef
    2️⃣.使用UIBeizerPath:
    3️⃣.使用UIBeizerPath&CAShapeLayer

    注意方法1️⃣,2️⃣需要在view的drawRect方法里重绘。

    方法一:CGContextRef(需要新建一个自定义view,在view的drawRect方法里进行绘制操作)
    - (void)drawRect:(CGRect)rect
    {
        // 设置背景色
        [[UIColor whiteColor] set];
        
        //拿到当前视图准备好的画板
        CGContextRef  context = UIGraphicsGetCurrentContext();
        
        //利用path进行绘制三角形
        CGContextBeginPath(context);//标记
        
        CGContextMoveToPoint(context,
                             _pointOne.x, _pointOne.y);//设置起点
        
        CGContextAddLineToPoint(context,
                                _pointTwo.x ,  _pointTwo.y);
        
        CGContextAddLineToPoint(context,
                                _pointThr.x, _pointThr.y);
        
        CGContextClosePath(context);//路径结束标志,不写默认封闭
        
        [_fillColor setFill];  //设置填充色
        
        [_fillColor setStroke]; //设置边框颜色
        
        CGContextDrawPath(context,
                          kCGPathFillStroke);//绘制路径path    
    }
    
    方法二:UIBeizerPath (同一,需要建自定义view)
    // 画三角形
    - (void)drawTrianglePath {
        
        UIBezierPath *path = [UIBezierPath bezierPath];
        [path moveToPoint:CGPointMake(20, 20)];
        [path addLineToPoint:CGPointMake(self.frame.size.width - 40, 20)];
        [path addLineToPoint:CGPointMake(self.frame.size.width / 2, self.frame.size.height - 20)];
        
        // 最后的闭合线是可以通过调用closePath方法来自动生成的,也可以调用-addLineToPoint:方法来添加
        //  [path addLineToPoint:CGPointMake(20, 20)];
        
        [path closePath];
        
        // 设置线宽
        path.lineWidth = 1.5;
        
        // 设置填充颜色
        UIColor *fillColor = [UIColor greenColor];
        [fillColor set];
        [path fill];
        
        // 设置画笔颜色
        UIColor *strokeColor = [UIColor blueColor];
        [strokeColor set];
        
        // 根据我们设置的各个点连线
        [path stroke];
    }
    
    
    方法三:UIBeizerPath&CAShapeLayer(路径使用UIBizerPath绘制,用CAShapeLayer生成最终图形)
    // CAShapeLayer and UIBezierPath
    - (void)setupViewByCAShapeLayer {
        CAShapeLayer *triangleLayer = [[CAShapeLayer alloc]init];
        UIBezierPath *path = [UIBezierPath bezierPath];
        [path moveToPoint:CGPointMake(200, 300)];
        [path addLineToPoint:CGPointMake(250, 200)];
        [path addLineToPoint:CGPointMake(300, 300)];
        triangleLayer.path = path.CGPath;
        [self.view.layer addSublayer:triangleLayer];
        [triangleLayer setFillColor:[UIColor cyanColor].CGColor];
    }
    

    三种方法看需求使用。第三种使用较多,可通过UIBezierPath的灵活性绘制很多样式的View。后续会把UIBezierPath的相关学习内容整理发出来。

    相关文章

      网友评论

          本文标题:如何画一个三角形

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