美文网首页
基本线条绘制(画线)(熟悉)

基本线条绘制(画线)(熟悉)

作者: 遇见灬最美的你 | 来源:发表于2016-11-30 15:33 被阅读14次
//
//  DrawView.m
//  01-基本线条绘制(画线)(熟悉)
//
//  Created by 李亮 on 2016/11/30.
//  Copyright © 2016年 www.thelast.com. All rights reserved.
//

#import "DrawView.h"

@implementation DrawView

- (void)drawRect:(CGRect)rect {
 
    [self drawCurve];
}
//曲线
- (void)drawCurve{
    
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    
    UIBezierPath * path = [UIBezierPath bezierPath];
    
    [path moveToPoint:CGPointMake(50, 200)];
    
    CGPoint p1 = CGPointMake(175, 200);
    CGPoint p2 = CGPointMake(300, 100);
    
    [path addCurveToPoint:CGPointMake(300, 100) controlPoint1:p1 controlPoint2:p2];
    
    [[UIColor yellowColor] set];
//    [path addQuadCurveToPoint:CGPointMake(300, 200) controlPoint:CGPointMake(175, 100)];
    
    CGContextAddPath(ctx, path.CGPath);
    CGContextStrokePath(ctx);
}
//链接线
- (void)drawlinkLines{
    
    //获取上下方
    CGContextRef contextRef = UIGraphicsGetCurrentContext();
    
    //生成路径
    UIBezierPath * path = [UIBezierPath bezierPath];
    
    CGPoint startP = CGPointMake(50, 200);
    //第一条
    [path moveToPoint:startP];
    [path addLineToPoint:CGPointMake(200, 200)];
    //链接第二条
    [path addLineToPoint:CGPointMake(200, 100)];
    //链接第3条
    [path addLineToPoint:CGPointMake(50, 100)];
    //链接第4条
    [path addLineToPoint:CGPointMake(50, 200)];
    
    //设置线宽
    CGContextSetLineWidth(contextRef, 10);
    //链接角
    CGContextSetLineJoin(contextRef, kCGLineJoinRound);
    //颜色
    [[UIColor redColor] set];
    //设置线的顶角样式
    CGContextSetLineCap(contextRef, kCGLineCapRound);
    
    CGContextAddPath(contextRef, path.CGPath);
    //关闭上下文
//    CGContextFillPath(contextRef);
    CGContextStrokePath(contextRef);
}
//画多条线
- (void)drawLines{
    
    //获取上下方
    CGContextRef contextRef = UIGraphicsGetCurrentContext();
    
    //生成路径
    UIBezierPath * path = [UIBezierPath bezierPath];
    
    CGPoint startP = CGPointMake(50, 200);
    //第一条
    [path moveToPoint:startP];
    [path addLineToPoint:CGPointMake(200, 200)];
    
    //第二条
    [path moveToPoint:CGPointMake(50, 100)];
    [path addLineToPoint:CGPointMake(200, 100)];
    
    CGContextAddPath(contextRef, path.CGPath);
    //关闭上下文
    CGContextStrokePath(contextRef);
}
//画一条线
- (void)drawLine{
    //获取上下方
    CGContextRef contextRef = UIGraphicsGetCurrentContext();
    
    //生成路径
    UIBezierPath * path = [UIBezierPath bezierPath];
    
    CGPoint startP = CGPointMake(50, 200);
    [path moveToPoint:startP];
    
    [path addLineToPoint:CGPointMake(200, 200)];
    
    CGContextAddPath(contextRef, path.CGPath);
    //关闭上下文
    CGContextStrokePath(contextRef);
}
@end

需要注意的是

CGPoint p1 = CGPointMake(175, 200);
CGPoint p2 = CGPointMake(300, 100);
[path addCurveToPoint:CGPointMake(300, 100) controlPoint1:p1 controlPoint2:p2]; 
[path addQuadCurveToPoint:CGPointMake(300, 200) controlPoint:CGPointMake(175, 100)];

这俩个方法,一个是设置一个点画曲线,另外一个是设置俩个点画曲线,有什么呢?
比如我上方给的俩个坐标点,如果p2给CGPointMake(300, 200);那么曲线会向下弯曲。如果给CGPointMake(300, 100),则会往上弯曲。如图

WechatIMG3.jpeg WechatIMG5.jpeg

相关文章

网友评论

      本文标题:基本线条绘制(画线)(熟悉)

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