Quartz2D的简单使用概述(一)-创新互联

    很久没有更新博文,今天把之前就想研究的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);

        //最后渲染即可

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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章标题:Quartz2D的简单使用概述(一)-创新互联
新闻来源:http://myzitong.com/article/cesjde.html