如何画一个三角形

如何画一个三角形_第1张图片
屏幕快照 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的相关学习内容整理发出来。

你可能感兴趣的:(如何画一个三角形)