- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
iOS开发Quartz2DUIBezierPath绘图大全详解
iOS 开发 Quartz 2D+ UIBezierPath绘图大全详解
Quartz 2D 使用大全结构图
UIKIt UIBezierPath Core Graphics OpenGL ES Quartz2D的区别和联系
UIKIt:UIKit中的控件都是基于Core Graphics实现的
UIBezierPath:UIBezierPath属于UIKit,它是苹果对复杂的Core Graphics进行的封装,方便我们用OC语言进行简单的绘图
Core Graphics:是一套基于C语言的API,支持向量图形,线、形状、图案、路径、剃度、位图图像和pdf 内容的绘制。
OpenGL ES:OpenGL是由SGI公司开发的一套3D图形软件接口标准,它只是一个标准,具体实现由机械制造商来完成,所以不同的机器他的效果可能是完全不一样的。OpenGL-ES版本,主要是应对嵌入式环境和应用的要求,应该说在高效完成2D/3D界面的同时,达到了降低功耗的效果。
Quartz2D:quartz是一个通用的术语,用于描述在IOS整个媒体层用到的多种技术 包括图形、动画、音频、适配。Quart 2D 是一组二位绘图和渲染API,Core Graphic会使用到这组API
Core Graphics框架
绘图我们要用到Core Graphics框架,Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎。该框架可以用于基于路径的绘图、变换、颜色管理、脱屏渲染,模板、渐变、遮蔽、图像数据管理、图像的创建、遮罩以及PDF文档的创建、显示和分析。
Core Graphics API所有的操作都在一个上下文中进行。所以在绘图之前需要获取该上下文并传入执行渲染的函数中。介绍两种最为常用的获取方法。
第一种方法就是创建一个图片类型的上下文。调用UIGraphicsBeginImageContextWithOptions函数就可获得用来处理图片的图形上下文。利用该上下文,你就可以在其上进行绘图,并生成图片。调用UIGraphicsGetImageFromCurrentImageContext函数可从当前上下文中获取一个UIImage对象。记住在你所有的绘图操作后别忘了调用UIGraphicsEndImageContext函数关闭图形上下文。
第二种方法是利用cocoa为你生成的图形上下文。当你子类化了一个UIView并实现了自己的drawRect:方法后,一旦drawRect:方法被调用,Cocoa就会为你创建一个图形上下文,此时你对图形上下文的所有绘图操作都会显示在UIView上。
什么是Quartz2D绘图引擎
Quartz 2D是,iOS中Quartz 2D画出来的。
Quartz 2D是纯C语言的
Quartz 2D的API来自于CoreGraphics框架
数据类型和函数基本都是CG作为前缀?
CGContextRef
CGPathRef
CGContextStrokePath(ctx)
Quartz 2D能完成的工作
绘制图形 : 线条\三角形\矩形\圆\弧形
绘制文字
绘制\生成图片(图像)
读取\生成PDF
截图\裁剪图片
自定义UI控件
Quartz2D绘图有以下两种方式
注意: UIBezierPath 对象可以独立使用, 无需手动获取“图形上下文”对象,此处为了更好的理解“图形上下文对象”所以暂时还是采用手动获取“图形上下文”对象的方式来绘图。
drawRect:方法的使用
View内部有个layer(图层)属性,drawRect:方法中取得的是一个Layer Graphics Context,因此,绘制的东西其实是绘制到view的layer上去了
iOS的绘图操作是在UIView类的drawRect方法中完成的,重写drawRect方法,在这里进行绘图操作,程序会自动调用此方法进行绘图。
重绘操作仍然在drawRect方法中完成,苹果要求我们调用UIView类中的setNeedsDisplay方法,则程序会自动调用drawRect方法进行重绘。(调用setNeedsDisplay会自动调用drawRect)。
在UIView中,重写drawRect: (CGRect) aRect方法,可以自己定义想要画的图案.且此方法一般情况下只会画一次.也就是说这个drawRect方法一般情况下只会被掉用一次. 当某些情况下想要手动重画这个View,只需要掉用[self setNeedsDisplay]方法即可.
rect指的就是当前view的bounds,即当前视图的所有范围。
drawRect:方法是系统帮我们调用的,不能手动去调用这个方法。原因是手动去调用drawRect方法的时候无法保证系统
文档评论(0)