CGContextRef使用简要教程
来源:互联网 发布:小痰盂和饼干头 知乎 编辑:程序博客网 时间:2024/06/05 02:55
Graphics Context是图形上下文,也可以理解为一块画布,我们可以在上面进行绘画操作,绘制完成后,将画布放到我们的view中显示即可,view看作是一个画框.
CGContextRef功能强大,我们借助它可以画各种图形。开发过程中灵活运用这些技巧,可以帮助我们提供代码水平。
说到画图,我就立马想到:我的数学公式都快忘完了。
高中数学你还记得多少?
我记得我上学的时候,数学一直都很好。以至于在班里都不敢和别人吵吵闹闹。一吵吵闹闹,别人就会来一句:以为你数学好,就可以怎么样怎么样了是吧?说的我好无奈啊。
这么多年过去了,说句实话,高中时学的数学公式什么的,都忘记的差不多了。现在要去做高三的考题,估计比写代码还难。
作为一名程序员,数学好,一定是优势。就拿画图来说吧,如果你还清楚的记得那些公式,那么你就可以很随意地画出一些好看的图形出来。
接下来,我们来看看CGContextRef到底能实现些什么?
写文字
- (void)drawRect:(CGRect)rect{ //获得当前画板 CGContextRef ctx = UIGraphicsGetCurrentContext(); //颜色 CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0); //画线的宽度 CGContextSetLineWidth(ctx, 0.25); //开始写字 [@"我是文字" drawInRect:CGRectMake(10, 10, 100, 30) withFont:font]; [super drawRect:rect];}
这段代码就可以很漂亮的写出四个大字:我是文字。很容易理解,每句话都有注释。
画直线
- (void)drawRect:(CGRect)rect{ //获得当前画板 CGContextRef ctx = UIGraphicsGetCurrentContext(); //颜色 CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0); //画线的宽度 CGContextSetLineWidth(ctx, 0.25); //顶部横线 CGContextMoveToPoint(ctx, 0, 10); CGContextAddLineToPoint(ctx, self.bounds.size.width, 10); CGContextStrokePath(ctx); [super drawRect:rect];}
画圆
- (void)drawRect:(CGRect)rect{ //获得当前画板 CGContextRef ctx = UIGraphicsGetCurrentContext(); //颜色 CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0); //画线的宽度 CGContextSetLineWidth(ctx, 0.25); //void CGContextAddArc(CGContextRef c,CGFloat x, CGFloat y,CGFloat radius,CGFloat startAngle,CGFloat endAngle, int clockwise)1弧度=180°/π (≈57.3°) 度=弧度×180°/π 360°=360×π/180 =2π 弧度 // x,y为圆点坐标,radius半径,startAngle为开始的弧度,endAngle为 结束的弧度,clockwise 0为顺时针,1为逆时针。 CGContextAddArc(ctx, 100, 20, 20, 0, 2*M_PI, 0); //添加一个圆 CGContextDrawPath(ctx, kCGPathStroke); //绘制路径 [super drawRect:rect];}
这个画圆的公式你还记得吗?你还知道M_PI是什么吗?等于多少吗?赶紧脑补一下吧!
画矩形
- (void)drawRect:(CGRect)rect{ //获得当前画板 CGContextRef ctx = UIGraphicsGetCurrentContext(); //颜色 CGContextSetRGBStrokeColor(ctx, 0.2, 0.2, 0.2, 1.0); //画线的宽度 CGContextSetLineWidth(ctx, 0.25); CGContextAddRect(ctx, CGRectMake(2, 2, 30, 30)); CGContextStrokePath(ctx); [super drawRect:rect];}
图形千千万,万变不离其宗。更多画图方法,期待你的探索。
作者李刚是刚刚在线(www.superqq.com)站长,百度百家专栏作者
iOS工程师非著名自媒体,微信公众号iOS开发:iOSDevTip运营者
0 0
- CGContextRef使用简要教程
- CGContextRef使用
- CGContextRef使用详解
- iOS CGContextRef的使用
- VclSkin 简要说明和使用教程
- [移动] Mosquitto简要教程(安装&使用)
- Mosquitto简要教程(安装&使用)
- Mosquitto简要教程(安装/使用/测试)
- Mosquitto简要教程(安装/使用/测试)
- Mosquitto简要教程(安装/使用/测试)
- CGContextRef
- CGContextRef
- CGContextRef
- CGContextRef
- CGContextRef
- CGContextRef
- gns3使用简要教程(gns3-wireshark捕获教程)
- iOS CGContextRef详解与使用
- 控制台API
- Partition Tabel测试drop和truncate 分区对全局和本地索引是否有影响
- Hibernate 一对多外键单向关联
- Firefox常用web开发插件
- arm, arm64, i386, x86_64
- CGContextRef使用简要教程
- Eclipse中设置作者日期等信息
- Another MySQL daemon already running with the same unix socket
- 【Android】读取sdcard卡上的所有图片并且显示,读取的过程有进度条显示
- Javascript事件模拟
- iOS 键盘收起~
- 每天游戏设计原理笔记(三)
- 在Genymotion上使用Fiddler & Wireshark抓包
- Largest Rectangle in Histogram