• Quartz2D 之 简单使用


    1. 获取Graphics Context

    CGContextRef  ctx = UIGraphicsGetCurrentContext();

      

    2. 最后的渲染接口

    CGContextStrokePath(ctx);//渲染空心图形,但线条没有空心直说,只有宽度
    CGContextFillPath(ctx);//渲染实心图形,如圆、矩形等。

    3. 基本接口

    3.1. 基本图形接口

    3.1.1.  颜色设置
    //第一种颜色设置
     CGContextSetRGBStrokeColor(ctx, 1.0, 0.7, 0.3, 1.0);
    
    //第二种颜色设置
     CGContextSetRGBFillColor(ctx, 1.0, 0.7, 0.3, 1.0);
    
    //第三种设置颜色的方式:同时设置空心颜色和实心颜色
    [[UIColor grayColor] set]
    
    //第四种颜色设置 实心颜色
    [[UIColor grayColor] setFill]
    
    //第五种颜色设置 空心颜色
    [[UIColor grayColor] setStroke]
    
    //第六种颜色设置
    [[UIColor colorWithRed:1.0 green:0 blue:0 alpha:1.0] set];
    3.1.2.  直线
    // 设置起点
    CGContextMoveToPoint(ctx, 20, 100);
    // 设置终点
    CGContextAddLineToPoint(ctx, 300, 100);
    
    //关闭起点和终点
    CGContextClosePath(ctx);

      直线属性:

    //设置线条的宽度
    CGContextSetLineWidth(ctx, 10);
    
    //设置线条起点和终点的样式为圆角
    CGContextSetLineCap(ctx, kCGLineCapRound);
    
    //设置线条的转角的样式为圆角
    CGContextSetLineJoin(ctx, kCGLineJoinRound);
    3.1.3.  矩形
    CGContextAddRect(ctx, CGRectMake(20, 20, 150, 100));
    3.1.4.  圆
    //
    CGContextAddArc(ctx, 100, 100, 50, 0, 2 * M_PI, 0);
    
    //椭圆
    CGContextAddEllipseInRect(ctx, CGRectMake(50, 100, 50, 50));
    3.1.5.  圆弧

      第一种方式,跟画圆一样,只是弧度大小小于 2*M_PI, 一个M_PI是180度。

    CGContextAddArc(CGContextRef  _Nullable c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise)
    
    //参数分别为:Graphics Context, 圆心X轴,圆心Y轴,半径,起始弧度,结束弧度,顺/逆时针

      空心绘制时需要封口。

    3.1.6.  饼状图

      饼状图由两条线,和一个没有封口的圆弧组成。或者实现起来由一条线,一个圆弧,然后封口组成。注意的是,圆弧的圆心和线的起点是同一个点。

    // 画线
    CGContextMoveToPoint(ctx, 100, 100);
    CGContextAddLineToPoint(ctx, 100, 150);
    
    // 画圆弧
    CGContextAddArc(ctx, 100, 100, 50, M_PI_2, M_PI, 0);
        
    // 关闭路径
    CGContextClosePath(ctx);

       M_PI对应的弧度是180度,这样,就可以根据比例来算初始位置和大小了。

  • 相关阅读:
    什么是动态链接库
    <<TCP/IP高效编程>>读书笔记
    C++ 函数
    我的vim配置
    FastReport4.6程序员手册_翻译
    DUnit研究初步
    ADO BUG之'无法为更新定位行....' 解决之道
    极限编程的集成测试工具Dunit
    总结
    项目管理检查清单项目启动
  • 原文地址:https://www.cnblogs.com/SimonGao/p/5034924.html
Copyright © 2020-2023  润新知