zoukankan      html  css  js  c++  java
  • UIBezierPath

    可以创建基于矢量的路径,此类是Core Graphics框架关于路径的封装。使用此类可以定义简单的形状,如椭圆、矩形或者有多个直线和曲线段组成的形状等。

    创建对象

    工厂方法

    • +(instancetype)bezierPath;
    • +(instancetype)bezierPathWithRect:(CGRect)rect;
      • 根据rect画出矩形路径
    • +(instancetype)bezierPathWithOvalInRect:(CGRect)rect;
      • 画出rect的内切圆(椭圆)
    • +(instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius;
      • 根据rect画出矩形路径
      • cornerRadius参数是圆角大小
    • +(instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
      • 画圆弧
      • center: 弧线中心点的坐标
      • radius: 弧线所在圆的半径
      • startAngle: 弧线开始的角度值
      • endAngle: 弧线结束的角度值
      • clockwise: 是否顺时针画弧线

    构造路径

    • -(void)moveToPoint:(CGPoint)point;
      • 置初始线段的起点 ,将point赋值为当前点
    • -(void)addLineToPoint:(CGPoint)point;
      • 将当前点和 point点连线,并将point赋值为当前点
    • -(void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2;
      • 绘制贝塞尔曲线
      • 当前点和 endPoint为贝塞尔曲线的两个端点
      • controlPoint1和controlPoint2牵制曲线形状

    如图:

    • -(void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint;
      • 绘制贝塞尔曲线
      • 当前点和 endPoint为贝塞尔曲线的两个端点
      • controlPoint牵制曲线形状

    如图:

    • -(void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
      • 画圆弧
      • center: 弧线中心点的坐标
      • radius: 弧线所在圆的半径
      • startAngle: 弧线开始的角度值
      • endAngle: 弧线结束的角度值
      • clockwise: 是否顺时针画弧线
    • -(void)closePath
      • 在最后一个点和第一个点之间画一条线段

    画笔属性

    • @property(nonatomic) CGFloat lineWidth;
      • 画笔宽度
    • @property(nonatomic) CGLineCap lineCapStyle;
      • 设置线条拐角帽的样式
      • 有以下三个值
        • kCGLineCapButt (默认的)
        • kCGLineCapRound (轻微圆角)
        • kCGLineCapSquare (正方形)
    • @property(nonatomic) CGLineJoin lineJoinStyle;
      • 两条线连结点的样式
      • 有以下三个值
        • kCGLineJoinMiter, (默认的表示斜接)
        • kCGLineJoinRound, (圆滑衔接)
        • kCGLineJoinBevel (斜角连接)

    示例:

    使用UIBezierPath画图步骤:

    1. 创建一个UIBezierPath对象
    2. 调用-moveToPoint:设置初始线段的起点
    3. 添加线或者曲线去定义一个或者多个子路径
    4. 改变UIBezierPath对象跟绘图相关的属性。如,我们可以设置画笔的属性、填充样式等

    三角形

    // 画三角形
    - (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];
    }
  • 相关阅读:
    (转)Scrapy 深入一点点
    解决Scrapy shell启动出现UnicodeEncodeError问题
    js回调方法
    UGUI 之 控件以及按钮的监听事件系统 存档
    重力感应示例
    网格概念
    Flash Player11异步解码Bitmap
    打包包含已修改过的bug
    ios7官方推荐icon尺寸
    项目资源通过swc获取
  • 原文地址:https://www.cnblogs.com/sunyanyan/p/5341611.html
Copyright © 2011-2022 走看看