博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS的Quartz2D篇——基本图形的绘制
阅读量:6567 次
发布时间:2019-06-24

本文共 3449 字,大约阅读时间需要 11 分钟。

一、如何利用Quartz2D绘制东西到view上?
首先,得有图形上下文Context,因为它能保存绘图信息,并且决定着绘制到什么地方去
其次,那个图形上下文必须跟view相关联,才能将内容绘制到view上面
 
二、自定义图形的基本步骤
1、新建一个类,继承自UIView
2、实现- (void)drawRect:(CGRect)rect方法,然后在这个方法中
2.1取得跟当前view相关联的图形上下文
2.2绘制相应的图形内容
2.3利用图形上下文将绘制的所有内容渲染显示到view上面
 
三、基本图形的绘制
1、直线
1 - (void)drawRect:(CGRect)rect 2 { 3     /**   一、画直线:*/ 5     //    1、上下文 6     CGContextRef ctx = UIGraphicsGetCurrentContext(); 7  8     //    2、绘制图形 9     //    2.1起点10     CGContextMoveToPoint(ctx, 50, 100);11     //    2.2终点12     CGContextAddLineToPoint(ctx, 250, 100);13     14     15     CGContextAddLineToPoint(ctx, 250, 150);16     //    2.3颜色17     [[UIColor blueColor] set];18     //    2.4宽度19     CGContextSetLineWidth(ctx, 10);20     //    2.5起点终点的样式21     //    kCGLineCapButt,直角22     //    kCGLineCapRound, 圆弧23     //    kCGLineCapSquare 正方形  25     CGContextSetLineCap(ctx, kCGLineCapRound);26     27     //    2.6拐角样式28     //    kCGLineJoinMiter:直角29     //    kCGLineJoinBevel:斜面30     //    kCGLineJoinRound:圆弧31     CGContextSetLineJoin(ctx, kCGLineJoinBevel);32     33     //   3、渲染直线(使用空心的线,直线不用实心的):34 //    CGContextFillPath(ctx);35     CGContextStrokePath(ctx);36     37 }

 

2、四边形

- (void)drawRect:(CGRect)rect{    /**  二、画四边形:     思路一:设置四个点,依次连接,最后用closePath闭合     思路二:直接用CGContextAddRect方法,传递起点和宽高就好;但只能画正四边形*/        //    1、上下文    CGContextRef ctx = UIGraphicsGetCurrentContext();    /* 方法一:     //    2、绘制图形     //    2.1第一个点     CGContextMoveToPoint(ctx, 50, 100);     //    2.2第二个点     CGContextAddLineToPoint(ctx, 50, 200);     //    2.3第三个点     CGContextAddLineToPoint(ctx, 250, 200);     //    2.4第4个点     CGContextAddLineToPoint(ctx, 250, 100);     //    2.4闭合     CGContextClosePath(ctx);     */        //    方法二:    CGContextAddRect(ctx, CGRectMake(100, 100, 100, 100));        //    2.5颜色    [[UIColor purpleColor] set];        //   3、渲染可以实心:    CGContextFillPath(ctx);}

 

三、椭圆

- (void)test3Ellipse{    /**  三、画椭圆 和圆:     思路:直接用CGContextAddEllipseInRect方法,传递起点和宽高就好;但只能画正四边形*/        //    1、上下文    CGContextRef ctx = UIGraphicsGetCurrentContext();        //    2、椭圆 宽 != 高    CGContextAddEllipseInRect(ctx, CGRectMake(50, 100, 200, 100));        //    3、圆: 宽 = 高    CGContextAddEllipseInRect(ctx, CGRectMake(100, 300, 100, 100));        //    2.5颜色    [[UIColor blueColor] set];        //   3、渲染可以实心:!注意:要让两个图形的颜色不一样,就需要单独渲染,不能共用一个渲染器    CGContextFillPath(ctx);       }

4、圆弧

- (void)test4AngleLine{    /**  四、圆弧:     思路:直接用CGContextAddArc*/        //    1、上下文    CGContextRef ctx = UIGraphicsGetCurrentContext();        // 2.画圆弧CGContextAddArc方法的参数:    // x/y 圆心    // radius 半径    // startAngle 开始的弧度    // endAngle 结束的弧度    // clockwise 画圆弧的方向 (0 顺时针, 1 逆时针)    //    CGContextAddArc(ctx, 100, 100, 50, -M_PI_2, M_PI_2, 0);    CGContextAddArc(ctx, 150, 100, 50, 0, M_PI, 1);    //    2.5颜色    [[UIColor greenColor] set];        //   3、渲染    CGContextStrokePath(ctx);}

 

5、饼状图

- (void)test5Cake{    /** 五、画饼状图     思路:直接先画直线,之后接着最后的点画一个弧线,最后close*/        //    1、上下文    CGContextRef ctx = UIGraphicsGetCurrentContext();    //    // 2.1画线    CGContextMoveToPoint(ctx, 100, 100);    CGContextAddLineToPoint(ctx, 100, 150);    // 2.2画圆弧    CGContextAddArc(ctx, 100, 100, 50, M_PI_2, M_PI, 0);    //    CGContextAddArc(ctx, 100, 100, 50, -M_PI, M_PI_2, 1);        // 2.3关闭路径    CGContextClosePath(ctx);        // 2.4颜色    [[UIColor yellowColor] set];        //   3、渲染    CGContextFillPath(ctx);}

 

 

转载于:https://www.cnblogs.com/coco-bao9107/p/3777767.html

你可能感兴趣的文章
git stash和git stash pop
查看>>
趣图:好好干,今天再加个班
查看>>
Redhat linux5.5下Oracle 10g 安装配置手册一
查看>>
服务器安装配置流水帐
查看>>
linux下oracle数据库的启动和关闭
查看>>
html5模拟keyup事件
查看>>
tf.name_scope() 和 tf.variable_scope() 的用法和玄机
查看>>
秒杀系统架构分析与实战
查看>>
OSChina 技术周刊第十六期 —— 每周技术精粹
查看>>
OSChina 技术周刊第二十九期 —— HTTP 有时候比 HTTPS 好?
查看>>
在Win7下利用VirtualBox和Vagrant安装Docker
查看>>
Elasticsearch 2.2.0 索引配置详解
查看>>
【工具使用系列】关于 MATLAB 液压元件,你需要知道的事
查看>>
给研发工程师的代码质量利器 | SOFAChannel#5 直播整理
查看>>
icinga安装介绍,监控软件
查看>>
正则表达式总结图
查看>>
Quartz 实现分布式任务调度
查看>>
IntelliJ IDEA 安装go插件
查看>>
Javascript基础知识 - 基础部分
查看>>
RHEL6.4换CentOS源
查看>>