扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
很久没有更新博文,今天把之前就想研究的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许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流