贝塞尔曲线学习 (二)

本系列文章为自己学习BezierPath的过程记录,有些知识是百度出来的,这里算个总结。

上篇文章简单的学习了一下画线的知识,其实有心的人可能已经发现了,关于绘制这块,系统已经提供了几个内置的方法:

+ (instancetype)bezierPathWithRect:(CGRect)rect;
+ (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius; // rounds all corners with the same horizontal and vertical radius
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii;
+ (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
+ (instancetype)bezierPathWithCGPath:(CGPathRef)CGPath;

今天就简单的介绍一下这几个方法


1:画矩形
  • (instancetype)bezierPathWithRect:(CGRect)rect;
    系统方法,画矩形
    rect: 矩形的Frame
- (void)drawRect:(CGRect)rect
{
    // 设置线的填充色
    [[UIColor redColor] setStroke];
    
    // 新建一个bezier对象,此对象用于绘制矩形,需要传入绘制的矩形的Frame
    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRect:CGRectMake(10, 10, 280, 280)];
    // 设置线宽度
    bezierPath.lineWidth = 10;
    // 设置线两头样式
    bezierPath.lineCapStyle = kCGLineCapRound;
    
    // 开始绘制
    [bezierPath stroke];
}
贝塞尔曲线学习 (二)_第1张图片
屏幕快照 2015-12-30 14.49.09.png

2:画矩形,圆角矩形
  • (instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius; // rounds all corners with the same horizontal and vertical radius
    系统方法,绘制一个圆角的矩形
    rect: 矩形的Frame
    cornerRadius: 圆角的半径
- (void)drawRect:(CGRect)rect
{
    // 设置线的填充色
    [[UIColor redColor] setStroke];
    
    // 新建一个bezier对象,此对象用于绘制一个圆角矩形
    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 280, 280)
                                                          cornerRadius:30];
    // 设置线宽度
    bezierPath.lineWidth = 10;
    
    // 开始绘制
    [bezierPath stroke];
}
贝塞尔曲线学习 (二)_第2张图片
屏幕快照 2015-12-30 15.08.32.png

3:画矩形,部分圆角的矩形

  • (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii;
    画一个部分圆角的矩形
    rect: 需要画的矩形的Frame
    corners: 哪些部位需要画成圆角
    cornerRadii: 圆角的Size
- (void)drawRect:(CGRect)rect
{
    // 设置线的填充色
    [[UIColor redColor] setStroke];
    
    // 新建一个bezier对象,此对象用于绘制一个部分圆角的矩形,左上、右下
    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 280, 280)
                                                     byRoundingCorners:UIRectCornerTopLeft | UIRectCornerBottomRight
                                                           cornerRadii:CGSizeMake(10, 10)];
    // 设置线宽度
    bezierPath.lineWidth = 10;
    
    // 开始绘制
    [bezierPath stroke];
}
贝塞尔曲线学习 (二)_第3张图片
屏幕快照 2015-12-30 15.35.48.png

4:画圆,内切圆
  • (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
    画圆,这个方法绘制的是一个矩形的内切圆
    rect: 矩形的Frame
- (void)drawRect:(CGRect)rect
{
    // 设置线的填充色
    [[UIColor redColor] setStroke];
    
    // 新建一个bezier对象,此对象用于绘制内切圆,需要传入绘制内切圆的矩形的Frame
    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(10, 10, 280, 280)];
    // 设置线宽度
    bezierPath.lineWidth = 10;
    // 设置线两头样式
    bezierPath.lineCapStyle = kCGLineCapRound;
    
    // 开始绘制
    [bezierPath stroke];
}
贝塞尔曲线学习 (二)_第4张图片
屏幕快照 2015-12-30 14.57.05.png

5:画圆弧
  • (instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
    center: 圆心坐标
    radius: 圆的半径
    startAngle: 绘制起始点角度
    endAngle: 绘制终点角度
    clockwise: 是否顺时针
- (void)drawRect:(CGRect)rect
{
    // 设置线的填充色
    [[UIColor redColor] setStroke];
    
    // 新建一个bezier对象,此对象用于绘制一个圆弧
    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(150, 150)
                                                              radius:110
                                                          startAngle:0
                                                            endAngle:M_PI_2
                                                           clockwise:NO];
    // 设置线宽度
    bezierPath.lineWidth = 10;
    
    // 开始绘制
    [bezierPath stroke];
}
贝塞尔曲线学习 (二)_第5张图片
屏幕快照 2015-12-30 16.32.44.png

你可能感兴趣的:(贝塞尔曲线学习 (二))