Core Graphics核心绘图 ( 三) --贝塞尔曲线

1)UIBezierPath(贝塞尔曲线)

在自定义View的时候,可以使用贝塞尔曲线(UIBezierPath)类来实现直线和曲线的绘制和渲染,起初是使用贝塞尔曲线是定义路径的几何形状。贝塞尔曲线可以定义矩形、椭圆和圆形等简单形状或者是融合直线和曲线的多边形,并且可以调用该类中的一些方法在当前上下文中渲染定义完的路径形状。

这里写图片描述

1:画矩形

+(instancetype)bezierPathWithRect:(CGRect)rect;
rect: 矩形的Frame
- (void)myBezierPathWithRect:(CGRect)rect{
    [[UIColor redColor] setStroke];
    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRect:CGRectMake(10, 10, 280, 280)];
   bezierPath.lineWidth = 10;
    // 设置线两头样式
    bezierPath.lineCapStyle = kCGLineCapRound;
    // 开始绘制
    [bezierPath stroke];
}

效果:
这里写图片描述

2:画矩形&&圆角矩形

(instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius; 
rect: 矩形的Frame
cornerRadius: 圆角的半径
- (void)myBezierPathWithRoundedRect:(CGRect)rect {
    [[UIColor redColor] setStroke];
    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(10, 10, 200, 200)
                                                      cornerRadius:40];
    bezierPath.lineWidth = 10;
    bezierPath.lineCapStyle = kCGLineCapRound;
    [bezierPath stroke];
}

效果:

3画矩形(部分圆角的矩形)

+(instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadiirect: 需要画的矩形的Frame
corners: 哪些部位需要画成圆角
cornerRadii: 圆角的Size
-(void)myNewBezierPathWithRoundedRect:(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];
}

4:画圆弧

+(instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
center: 圆心坐标
radius: 圆的半径
startAngle: 绘制起始点角度
endAngle: 绘制终点角度
clockwise: 是否顺时针
 - (void)myBezierPathWithArcCenter{
   [[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];

}

4:画圆,内切圆

+(instancetype)bezierPathWithOvalInRect:(CGRect)rect;
rect: 矩形的Frame
  [[UIColor redColor] setStroke];
 // 新建一个bezier对象,此对象用于绘制内切圆,需要传入绘制内切圆的矩形的Frame
    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(10, 10, 280, 280)];
    // 设置线宽度
    bezierPath.lineWidth = 10;
    // 设置线两头样式
    bezierPath.lineCapStyle = kCGLineCapRound;

    // 开始绘制
    [bezierPath stroke];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值