zoukankan      html  css  js  c++  java
  • Arcs绘制弧度有关的理解

    绘制弧度的相关问题、用法的理解

    两种方法创建弧度 第一种
    void CGContextAddArc (
      CGContextRef c,    
      CGFloat x,             //圆心的x坐标
      CGFloat y,  //圆心的x坐标
      CGFloat radius,  //圆的半径
      CGFloat startAngle,    //开始弧度
      CGFloat endAngle,  //结束弧度
      int clockwise          //0表示顺时针,1表示逆时针
    );
    起始弧度为X轴方向,向下为正,向下方向进行旋转绘制
    假如想创建一个完整的圆圈,那么 开始弧度就是0 结束弧度是 2pi, 因为圆周长是 2*pi*r.
    最后,函数执行完后,current point就被重置为(x,y).
    第二种
    void CGContextAddArcToPoint (
      CGContextRef c,
      CGFloat x1, //端点1的x坐标
      CGFloat y1, //端点1的y坐标
      CGFloat x2, //端点2的x坐标
      CGFloat y2, //端点2的y坐标
      CGFloat radius //半径
    );
    原理:首先画两条线,这两条线分别是 current point to (x1,y1) 和(x1,y1) to (x2,y2).
    这样就是出现一个以(x1,y1)为顶点的两条射线,
    然后定义半径长度,这个半径是垂直于两条射线的,这样就能决定一个圆了,
    最后,函数执行完后,current point就被重置为(x2,y2).如果后面还有CGContextAddArcToPoint函数调用,那么这个(X2,Y2)就是新的绘制起点。
    CGContextAddArcToPoint调用一次,就会在视图绘制一段弧,并且由两个CGContextAddArcToPoint函数调用绘制的两段弧,是相互独立的,
    参考代码

    CGContextMoveToPoint(context, fw, fh/2);  // Start at lower right corner

    CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);  // Top right corner

    CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1); // Top left corner

    下面的代码和上面的代码类似:

    CGContextMoveToPoint(context, fw, fh/2);  // Start at lower right corner

    CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);  // Top right corner

    CGContextMoveToPoint(context, fw/2, fh);  // 重新移动焦点到制定的位置,为进行下一段弧的绘制做准备

    CGContextAddArcToPoint(context, 0, fh, 0, fh/21); // Top left corner

    如果程序中CGContextAddArcToPoint被连续调用了N次,那么程序就等于在是视图中连续绘制N条相互独立但首尾又相连的弧线段。


    THE END !



  • 相关阅读:
    比较两个NSDate
    关于修改UIWebView的UserAgent
    iOS9适配 之 关于info.plist 第三方登录 添加URL Schemes白名单
    iOS系统自带分享功能
    swift中的协议
    iOS性能优化:Instruments使用实战
    iOS利用HealthKit框架从健康app中获取步数信息
    iOS设备型号
    iOS消息推送机制
    Swift进阶
  • 原文地址:https://www.cnblogs.com/xingchen/p/2166132.html
Copyright © 2011-2022 走看看