摘要: CoreGraphics的功能非常强大,可以绘制各种图形;今天学习一下怎么绘制简单的点线面,记录学习。

一、导入coreGraphics.framework

二、绘制图形

1、绘制矩形

// 绘制矩形
- (void)drawRectangle { // 定义矩形的rect
CGRect rectangle = CGRectMake(, , , ); // 获取当前图形,视图推入堆栈的图形,相当于你所要绘制图形的图纸
CGContextRef ctx = UIGraphicsGetCurrentContext(); // 在当前路径下添加一个矩形路径
CGContextAddRect(ctx, rectangle); // 设置试图的当前填充色
CGContextSetFillColorWithColor(ctx, [UIColor blackColor].CGColor); // 绘制当前路径区域
CGContextFillPath(ctx);
}

2、绘制椭圆

// 绘制椭圆
- (void)drawEllipse { // 获取当前图形,视图推入堆栈的图形,相当于你所要绘制图形的图纸
CGContextRef ctx = UIGraphicsGetCurrentContext(); // 定义其rect
CGRect rectangle = CGRectMake(, , , ); // 在当前路径下添加一个椭圆路径
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, , ); /**
* @brief 在当前点追加直线段,参数说明与上面一样
*/
CGContextAddLineToPoint(ctx, , );
CGContextAddLineToPoint(ctx, , ); // 关闭并终止当前路径的子路径,并在当前点和子路径的起点之间追加一条线
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, , ); /**
* @brief 在指定点追加二次贝塞尔曲线,通过控制点和结束点指定曲线。
* 关于曲线的点的控制见下图说明,图片来源苹果官方网站。参数按顺序说明
* @param c 当前图形
* @param cpx 曲线控制点的x坐标
* @param cpy 曲线控制点的y坐标
* @param x 指定点的x坐标值
* @param y 指定点的y坐标值
*
*/
CGContextAddQuadCurveToPoint(ctx, , , , ); // 设置图形的线宽
CGContextSetLineWidth(ctx, ); // 设置图形描边颜色
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, , , * M_PI, ); //绘制当前路径区域
CGContextFillPath(ctx);
}

6.画一条线

-(void)drawLine
{
CGContextRef context = UIGraphicsGetCurrentContext();
//画一条线
CGContextSetRGBStrokeColor(context, 0.5, 0.5, 0.5, 0.5);//线条颜色
CGContextMoveToPoint(context, , );
CGContextAddLineToPoint(context, ,);
CGContextStrokePath(context);
}

三、在drawRect中调用

- (void)drawRect:(CGRect)rect {

    // 绘制椭圆
[self drawEllipse]; // 绘制三角
[self drawTriangle]; // 绘制矩形
[self drawRectangle]; // 绘制曲线
[self drawCurve]; // 绘制圆形
[self drawCircleAtX: Y:]; [self drawCircleAtX: Y:]; }

效果如图:

转:http://my.oschina.net/joanfen/blog/150411

ios Quartz 各种绘制图形用法的更多相关文章

  1. IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等

    // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affec ...

  2. Quartz 2D(常用API函数、绘制图形、点线模式)

    Quzrtz 2D 绘图的核心 API 是 CGContextRef ,它专门用于绘制各种图形. 绘制图形关键是两步: 1.获取 CGContextRef ; 2.调用 CGContextRef 的方 ...

  3. html5 canvas 笔记一(基本用法与绘制图形)

    <canvas> 元素 <canvas id="tutorial" width="150" height="150"> ...

  4. iOS - Quartz 2D 画板绘制

    1.绘制画板 1.1 绘制简单画板 PaintBoardView.h @interface PaintBoardView : UIView @end PaintBoardView.m @interfa ...

  5. iOS - Quartz 2D 二维绘图

    1.Quartz 2D 简介 Quartz 2D 属于 Core Graphics(所以大多数相关方法的都是以 CG 开头),是 iOS/Mac OSX 提供的在内核之上的强大的 2D 绘图引擎,并且 ...

  6. iPhone之Quartz 2D系列--图形上下文(2)(Graphics Contexts)

    以下几遍关于Quartz 2D博文都是转载自:http://www.cocoachina.com/bbs/u.php?action=topic&uid=38018 iPhone之Quartz ...

  7. Quartz 2D - 图形上下文(Graphics Contexts)

    一个Graphics Context表示一个绘制目标.它包含绘制系统用于完成绘制指令的绘制参数和设备相关信息.Graphics Context定义了基本的绘制属性,如颜色.裁减区域.线条宽度和样式信息 ...

  8. iOS 开发:绘制像素到屏幕

    转载:https://segmentfault.com/a/1190000000390012 译注:这篇文章虽然比较长,但是里面的内容还是很有价值的. 像素是如何绘制到屏幕上面的?把数据输出到屏幕的方 ...

  9. 11-UIKit(Storyboard、View的基本概念、绘制图形、UIBezierPath)

    目录: 1. Storyboard 2. Views 3. View的基本概念介绍 4. 绘制图形 5. UIBezierPath 回到顶部 1. Storyboard 1.1 静态表视图 1)Sec ...

随机推荐

  1. iOS边练边学--transform的简单介绍并且用transform实现键盘处理

    一.transform:形变属性,能完成功能:平移,缩放,旋转 <平移> // 根据给的移动距离平移 self.tempView.transform = CGAffineTransform ...

  2. ARDUINO PWM

    转至:http://www.sl088.com/voyage/2012/10/11506.slboat#.E5.8F.91.E7.8E.B0 http://www.engblaze.com/micro ...

  3. jquery-easyui 中表格的行编辑功能

    具体实现代码如下: <table id="tt"></table> $('#tt').datagrid({ title:'Editable DataGrid ...

  4. Geometric deep learning on graphs and manifolds using mixture model CNNs

    Monti, Federico, et al. "Geometric deep learning on graphs and manifolds using mixture model CN ...

  5. JDK中的序列化和反序列化

    题外话:诸事缠身,不知不觉距离上一篇就将近一个月了,读书不易,学习不易,唯有坚持. 写来写去始终不满意,索性贴一个比较好的文章吧! 参考: [Java基础]序列化与反序列化深入分析

  6. ANSI 标准是为了确保 C++ 的便携性

    ANSI 标准ANSI 标准是为了确保 C++ 的便携性 —— 您所编写的代码在 Mac.UNIX.Windows.Alpha 计算机上都能通过编译. 由于 ANSI 标准已稳定使用了很长的时间,所有 ...

  7. The request lifetime scope cannot be created because the HttpContext is not available

    项目中应用了Autofac,在Global轮询处理Job的时候,需要获取现有得Service,而这些Service已经通过Autofac进行了配置,所以理所应当的用下面的代码去获取了. Depende ...

  8. (转)I,P,B帧和PTS,DTS的关系

    基本概念: I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象. ...

  9. sudo 之后 unable to resolve host的问题解决办法

    gedit /etc/hosts #127.0.0.1 localhost #127.0.0.1 Masterback或者其他 把后面的Masterback 或者其他改成新的主机名,应该是最近修改过主 ...

  10. ADO 调用Execute失败,异常码DB_E_DATAOVERFLOW

    今天,通过ADO接口往PG数据库中插入数据,结果数据始终不能插入到数据库的表中,执行insert语句后,返回失败,错误码DB_E_DATAOVERFLOW. DB_E_DATAOVERFLOW:命令中 ...