温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Quartz2D的简单使用概述(一)

发布时间:2020-07-22 17:50:38 来源:网络 阅读:312 作者:Jacksun2Coshine 栏目:开发技术

        很久没有更新博文,今天把之前就想研究的quartz2D看了下,了解了些简单的作画方法,赶紧记录下来。学习Quartz2D的主要目的是为了以后更加方便的自定义一些界面控件时用到,毕竟大部分app都有个性化的定制界面。以下纪录一些常用的简单作图方法。

        想要自定义的控件基本都是继承自UIView,然后重写其drawRect方法。Quartz2D的方法都是纯c的,所有通用的步骤都是先获取上下文,然后再进行内部自定义,最后渲染,而且它的自带函数多半都是CGContext开头的:

        1.获取上下文

        CGContextRef ctx = UIGraphicsGetCurrentContext();

        2.进行自定义做图

        ...具体方法在后面单个举例

        3.渲染(针对不同情况,进行不同的渲染)

        CGContextStrokePath(ctx);    //空心

        CGContextFillPath(ctx);         //实心


举例1:画直线


        //获取上下文

        CGContextRef ctx = UIGraphicsGetCurrentContext();

        //设置起止点

        CGContextMoveToPoint(ctx,20,100);         //起点

        CGContextAddLineToPoint(ctx,50,150);    //终点

        [[UIColor redColor] set];    //设置绘制的颜色


         CGContextSetLineCap(ctx,kCGLineCapRound);    //起止点的样式(圆形)

        CGContextSetLineJoin(ctx,kCGLineJoinRound);    //转角点的样式(圆形)

        

        //最关键的一步-----渲染

        CGContextStrokePath(ctx);    //要注意,线条不要渲染为实心的 


举例2:画三角形


        重复的方法这里不写了,仍然是先获取上下文,设置起点,第一个转折点,终点,最后再回到起点即可。

        CGContextMoveToPoint(ctx,20,100);         //起点

        CGContextAddLineToPoint(ctx,100,100);  //转折点

        CGContextAddLineToPoint(ctx,50,150);    //终点

        CGContextAddLineToPoint(ctx,20,100);    //回到起点

当然还有自带的封闭方法可以调用:

        CGContextClosePath(ctx);                          //会自动将起点和终点连接起来


举例3:画矩形

        //专用方法

        CGContextAddRect(ctx,CGRectMake(100,100,100,80));

        然后设置一些基本的属性后就可以渲染了,既可以渲染成空心,也可以是实心


举例4:画圆形

        //专用方法(其实也是画椭圆的方法)

        CGCoontextAddArc(ctx,100,100,50,0,2*M_Pi,0);

        //参数要注意下:

        参数2和3:圆心坐标

        参数4:圆的半径

        参数5:开始绘制的角度

        参数6:结束绘制的角度

        参数7:绘制的方向(0顺时针,1逆时针)

        可以渲染成空心,也可以是实心


举例5:画椭圆

        //专用方法

        CGContextAddEllipseInRect(ctx,CGRectMake(100,100,50,60));

        说明一下,这个方法既可以用来画椭圆,也可以用来画圆,宽高不同为椭圆,相同即为圆。


举例5:画圆弧

        //这里使用的是画圆的方法

        CGCoontextAddArc(ctx,100,100,50,M_Pi_2,M_Pi,0);

        //然后调用连接起止点的方法即可

        CGContextClosePath(ctx);


举例6:画饼形

        //画饼形要先画一条直线,然后使用这条直线的长度画圆即可

        CGContextMoveToPoint(ctx,100,100);

        CGContextAddLineToPoint(ctx,100,150);

        // 画圆

        CGCoontextAddArc(ctx,100,100,50,M_Pi_2,M_Pi,0);

        //最后渲染即可


        这里要总结的说一点:所有的绘制过程必须写在获取上下文之后和渲染之前,这是标准的绘制过程。对于不同的需求,采取不同的渲染(空心和实心)。











向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI