CoreGraphics学习

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

一、导入coreGraphics.framework

二、绘制图形

1、绘制矩形

// 绘制矩形
- (void)drawRectangle {

    // 定义矩形的rect
	CGRect 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();

    // 定义其rect
	CGRect 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);
}

三、在drawRect中调用

- (void)drawRect:(CGRect)rect {

    // 绘制椭圆
	[self drawEllipse];

    // 绘制三角
	[self drawTriangle];

    // 绘制矩形
	[self drawRectangle];

    // 绘制曲线
	[self drawCurve];

    // 绘制圆形
	[self drawCircleAtX:120 Y:170];

	[self drawCircleAtX:200 Y:170];

}

效果如图:

CoreGraphics学习

时间: 2024-11-10 00:09:25

CoreGraphics学习的相关文章

开源中国iOS客户端学习

开源中国iOS客户端学习 续写前言 <开源中国iOS客户端学习>续写前系列博客    http://blog.csdn.net/column/details/xfzl-kykhd.html 开源中国iOS客户端学习——序 说到这款开源软件就得提到她的娘家了--开源中国社区: 开源中国社区简介:开源中国 www.oschina.net 成立于2008年8月,是目前中国最大的开源技术社区.传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现.使用.并交流开源技术的平台.目前开源中国社区已收

IOS学习笔记一

想学 IOS已久,但由于各项目太紧,另外因为比较懒,一直抽不出时间来学习.今天终于静下心,启动IOS学习计划. 工具准备:Mac一台,下载Xcode, 苹果实在太好了,什么东西都已经帮你做好了,连工具都集成好了.这点,android就显得太low了. 1. 了解一下IOS的四层结构, 由下往上依次是:Core OS(系统Lib层,SDK的调用),   Core Services核心服务层,  Media层以及Cocoa Touch, 这里,可以跟安卓的四层结构作个对比, android四层由下而

0811 iOS开发需要学习哪些内容

1.iOS开发需要学习哪些内容? 2.开发步骤 3.框架 为了方便开发者开发出强大的功能,苹果提供了各种各样的框架 [1]UIKit:创建和管理应用程序的用户界面 [2]QuartzCore:提供动画特效以及通过硬件进行渲染的能力 [3]CoreGraphics:提供2D绘制的基于C的API [4]CoreLocation:使用GPS和WIFI获取位置信息 [5]MapKit:为应用程序提供内嵌地图的接口 [6]AVFoundation:音频.视频处理 [7]--

GitHub 上都有值得关注学习的 iOS 开源项目

GitHub上有很多不错的iOS开源项目,个人认为不错的,有这么几个: 1. ReactiveCocoa:ReactiveCocoa/ReactiveCocoa · GitHub:GitHub自家的函数式响应式编程范式的Objective-C实现,名字听着很高大上,学习曲线确实也比较陡,但是绝对会改变你对iOS编程的认知,首推之.2. Mantle:Mantle/Mantle · GitHub:又是GitHub自家的产物,轻量级建模的首选,也可以很好的配合CoreData工作.3. AFNetw

4-15学习

4-15学习心得 UIView相关方法 [self.view insertSubview:girlView belowSubview:bottomView];//把girlView插入到bottomView后面 [self.view insertSubview:girlView aboveSubview:bottomView];//把girlView插入到bottomView前面 [self.view insertSubview:girlView atIndex:0];//把girlView插入

iOS 开发常用框架以及相关学习资料集合--不断更新

整理了一些开发时常用的一些框架的缩写,方便学习与记忆 有些资料可能时间比较久远了,我尽量挑选的都是最近两年的,里面有的是OC的,有Swift的,都是文章,语言的影响不大. 感谢以下各位博主的分享,如果有侵权的地方可以私信我删除,这是我的微博 http://weibo.com/lfbWb 不定时更新中 前缀 全称 对应库 简单解释 学习资料的链接 NS NextStep or NeXTSTEP Foundation.framework UI User Interface UIKit.framewo

CGContextRef&amp;CGMutablePathRef&amp;UIBezierPath简单学习

简单的四句介绍 Quartz是一个二维绘图引擎,使用的是CoreGraphics库,同时支持iOS和Mac系统 CGContextRef:获取图形上下文.或者叫作用域,即画布,他是专门用来保存绘画期间的各种数据的 UIBezierPath是对CGPathRef的封装.创建矢量图形时,拆解成一条或者多条线段,拼接起来,每条下端的终点都是下一条线段的起点 当我们绘制路径时,Path的信息就会被Graphics context重置. 如果我们想要保存path信息,并多次使用它,我们就可以用到CGPat

Vue.js学习笔记:属性绑定 v-bind

v-bind  主要用于属性绑定,Vue官方提供了一个简写方式 :bind,例如: <!-- 完整语法 --> <a v-bind:href="url"></a> <!-- 缩写 --> <a :href="url"></a> 绑定HTML Class 一.对象语法: 我们可以给v-bind:class 一个对象,以动态地切换class.注意:v-bind:class指令可以与普通的class特

Java多线程学习(吐血超详细总结)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 目录(?)[-] 一扩展javalangThread类 二实现javalangRunnable接口 三Thread和Runnable的区别 四线程状态转换 五线程调度 六常用函数说明 使用方式 为什么要用join方法 七常见线程名词解释 八线程同步 九线程数据传递 本文主要讲了java中多线程的使用方法.线程同步.线程数据传递.线程状态及相应的一些线程函数用法.概述等. 首先讲一下进程和线程