ios Quartz 各种绘制图形用法
摘要: CoreGraphics的功能非常强大,可以绘制各种图形;今天学习一下怎么绘制简单的点线面,记录学习。
一、导入coreGraphics.framework
二、绘制图形
1、绘制矩形
// 绘制矩形 - (void)drawRectangle {// 定义矩形的rectCGRect rectangle = CGRectMake(100, 290, 120, 25);// 获取当前图形,视图推入堆栈的图形,相当于你所要绘制图形的图纸CGContextRef ctx = UIGraphicsGetCurrentContext();// 在当前路径下添加一个矩形路径 CGContextAddRect(ctx, rectangle);// 设置试图的当前填充色 CGContextSetFillColorWithColor(ctx, [UIColor blackColor].CGColor);// 绘制当前路径区域 CGContextFillPath(ctx); }
2、绘制椭圆
// 绘制椭圆 - (void)drawEllipse {// 获取当前图形,视图推入堆栈的图形,相当于你所要绘制图形的图纸CGContextRef ctx = UIGraphicsGetCurrentContext();// 定义其rectCGRect rectangle = CGRectMake(10, 100, 300, 280);// 在当前路径下添加一个椭圆路径 CGContextAddEllipseInRect(ctx, rectangle);// 设置当前视图填充色 CGContextSetFillColorWithColor(ctx, [UIColor orangeColor].CGColor);// 绘制当前路径区域 CGContextFillPath(ctx); }
3、绘制三角形
// 绘制三角形 - (void)drawTriangle {// 获取当前图形,视图推入堆栈的图形,相当于你所要绘制图形的图纸CGContextRef ctx = UIGraphicsGetCurrentContext();// 创建一个新的空图形路径。 CGContextBeginPath(ctx);/** * @brief 在指定点开始一个新的子路径 参数按顺序说明* * @param c 当前图形* @param x 指定点的x坐标值 * @param y 指定点的y坐标值**/CGContextMoveToPoint(ctx, 160, 220);/** * @brief 在当前点追加直线段,参数说明与上面一样*/CGContextAddLineToPoint(ctx, 190, 260);CGContextAddLineToPoint(ctx, 130, 260);// 关闭并终止当前路径的子路径,并在当前点和子路径的起点之间追加一条线 CGContextClosePath(ctx);// 设置当前视图填充色 CGContextSetFillColorWithColor(ctx, [UIColor blackColor].CGColor);// 绘制当前路径区域 CGContextFillPath(ctx); }
4、绘制曲线
// 绘制曲线 - (void)drawCurve {// 获取当前图形,视图推入堆栈的图形,相当于你所要绘制图形的图纸CGContextRef ctx = UIGraphicsGetCurrentContext();// 创建一个新的空图形路径。 CGContextBeginPath(ctx);/*** @brief 在指定点开始一个新的子路径 参数按顺序说明** @param c 当前图形* @param x 指定点的x坐标值* @param y 指定点的y坐标值**/ CGContextMoveToPoint(ctx, 160, 100);/*** @brief 在指定点追加二次贝塞尔曲线,通过控制点和结束点指定曲线。* 关于曲线的点的控制见下图说明,图片来源苹果官方网站。参数按顺序说明* @param c 当前图形* @param cpx 曲线控制点的x坐标* @param cpy 曲线控制点的y坐标* @param x 指定点的x坐标值* @param y 指定点的y坐标值**/CGContextAddQuadCurveToPoint(ctx, 160, 50, 190, 50);// 设置图形的线宽CGContextSetLineWidth(ctx, 20);// 设置图形描边颜色 CGContextSetStrokeColorWithColor(ctx, [UIColor brownColor].CGColor);// 根据当前路径,宽度及颜色绘制线 CGContextStrokePath(ctx); }
曲线描绘示意图
5、绘制圆形
//以指定中心点绘制圆弧 - (void)drawCircleAtX:(float)x Y:(float)y {// 获取当前图形,视图推入堆栈的图形,相当于你所要绘制图形的图纸CGContextRef ctx = UIGraphicsGetCurrentContext();// 创建一个新的空图形路径。 CGContextSetFillColorWithColor(ctx, [UIColor blackColor].CGColor);/*** @brief 在当前路径添加圆弧 参数按顺序说明* * @param c 当前图形* @param x 圆弧的中心点坐标x* @param y 曲线控制点的y坐标* @param radius 指定点的x坐标值* @param startAngle 弧的起点与正X轴的夹角,* @param endAngle 弧的终点与正X轴的夹角* @param clockwise 指定1创建一个顺时针的圆弧,或是指定0创建一个逆时针圆弧**/CGContextAddArc(ctx, x, y, 20, 0, 2 * M_PI, 1);//绘制当前路径区域 CGContextFillPath(ctx); }
6.画一条线
-(void)drawLine {CGContextRef context = UIGraphicsGetCurrentContext(); //画一条线 CGContextSetRGBStrokeColor(context, 0.5, 0.5, 0.5, 0.5);//线条颜色 CGContextMoveToPoint(context, 20, 20); CGContextAddLineToPoint(context, 200,20); CGContextStrokePath(context); }
三、在drawRect中调用
- (void)drawRect:(CGRect)rect {// 绘制椭圆 [self drawEllipse];// 绘制三角 [self drawTriangle];// 绘制矩形 [self drawRectangle];// 绘制曲线 [self drawCurve];// 绘制圆形[self drawCircleAtX:120 Y:170];[self drawCircleAtX:200 Y:170];}
效果如图:
转:http://my.oschina.net/joanfen/blog/150411
转载于:https://www.cnblogs.com/lihaibo-Leao/p/3267762.html
ios Quartz 各种绘制图形用法相关推荐
- IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等...
// Only override drawRect: if you perform custom drawing. // An empty implementation adversely affec ...
- IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等
// Only override drawRect: if you perform custom drawing. // An empty implementation adversely affec ...
- iOS动画效果、绘制图形
文章转载自:http://www.cnblogs.com/kenshincui/p/3972100.html 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥 ...
- iOS - Quartz 2D 画板绘制
1.绘制画板 1.1 绘制简单画板 PaintBoardView.h @interface PaintBoardView : UIView@end PaintBoardView.m @interfac ...
- iOS 开发:绘制像素到屏幕
转载:https://segmentfault.com/a/1190000000390012 译注:这篇文章虽然比较长,但是里面的内容还是很有价值的. 像素是如何绘制到屏幕上面的?把数据输出到屏幕的方 ...
- iOS开发:绘制像素到屏幕
UI的底层原理,值得一看. 像素是如何绘制到屏幕上面的?把数据输出到屏幕的方法有很多,通过调用很多不同的framework和不同的函数.这里我们讲一下这个过程背后的东西.希望能够帮助大家了解什么时候该 ...
- html5 绘制图形,HTML5绘制几何图形
绘制几何图形 var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext(" ...
- html5中Canvas、绘制线条模糊、常见绘制工具、绘制基本图形、绘制图片、面向对象的方式绘制图形图片、绘制文本、帧动画绘制
Canvas容器: canvas标签用来定义图像的容器,必须配合脚本来绘制图像,canvas也运用于游戏开发.注意:canvas绘制图时会出现线条模糊情况,这是因为显示屏像素和canvas中定义的一个 ...
- 用html画一个企鹅图案的代码,HTML5 Canvas来绘制图形
1.HTML5元素用于图形的绘制,通过脚本(通常是javascript)来完成. 2.标签只是图形容器,必须使用脚本来绘制图形. 3.可以通过多种方法通过Canvas绘制路径.盒.圆.字符以及添加图像 ...
最新文章
- 电脑CPU依然得看英特尔酷睿:新一代性能提升20%,AI能力翻5倍;网友:感谢AMD...
- 我脸都问绿了!二面竟然被问到 MySQL 时间类型 datetime、bigint 及 timestamp 的查询效率。。。
- usr/bin/expect方式免密码登录和发送文件脚本
- 关于Tomcat5.5中EL表达式无效的解决办法
- 华为手机充满有提醒吗_2020手机充电速度排名:最快21分钟充满,华为第15名
- django外调用url_Django url
- python中的累乘积_Python中的连续元素最大乘积
- 高中计算机试题一,職业高中高考计算机专业试卷1.doc
- wxpython 树菜单单击_请教怎么在wxpython调用windows系统的右键菜单(context menu)?
- 深度学习入门:一文详解BP神经网络
- JS高级程序设计(10)
- 【GitHub通过ssh方法下载详细配置过程】
- Eviews3种面板模型的选择-F检验操作详情
- 超详细电脑安装win10专业版
- 云硬盘备份 | 概览
- python函数装饰器一篇入魂
- IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二)
- JBI2.0 at JavaOne[zz]
- Oracle设置sql执行时的并行度和强制走索引
- 如何使用freeline
热门文章
- 计算机网络中的交换技术
- bzoj 1002: [FJOI2007]轮状病毒
- 汉诺塔问题(递归思想)(堆栈学习)
- js中事件捕获和事件冒泡
- matlab2c使用c++实现matlab函数系列教程-ismember函数
- Linux操作系统基本命令
- Quartus报错Error (170040): Can‘t place all RAM cells in design Info (170034)的解决办法
- 线性方程组的5种描述方式
- Selenium基础篇之5-第一个完整的自动化测试脚本
- 020-python函数和常用模块-文件操作