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 !



  • 相关阅读:
    02Hibernate入门
    01Hibernate概述
    ExtJS布局-Layout
    STARLIMS 安装升级解决方案
    Windows Server 2012 安装.Net Framework 3.5
    vim 复制操作
    linux下挂载新硬盘
    转载 更改mysql 数据存储路径
    转载 阿里云centOS防火墙配置
    (转载)java线程
  • 原文地址:https://www.cnblogs.com/xingchen/p/2166132.html
Copyright © 2011-2022 走看看