转---关于CGContext与2D绘图的说明

来源:互联网 发布:淘宝网页版登录电脑版 编辑:程序博客网 时间:2024/06/06 17:50
翻译学习了一下Apple官方的《Getting started with Graphics and Animation》,原文见。概述

iOS包括一些框架用于图形和动画:

UIKit包括一个objc的库,用于用户界面和2D绘图,也可以通过UIKit做用户界面动画。 
Core Graphics是基于C的API,用于绘制矢量图形、位图和PDF内容。(注意,Quartz 2D是指2D画图引擎的术语,Core Graphics是框架的名称。这两个术语是同义词。 
Core Animation是基于objc的API,用于增加用户图形界面的平滑效果和动态的反馈 
OpenGL ES是OpenGL的移动版本,用于在移动设备上高性能的2D和3D绘图。苹果的OpenGL ES框架包括EAGL,这是一种基于objc的API,它在Core Animation层和UIKit视图上集成了OpenGL ES的渲染功能。

可使用UIKit实现典型的用户界面图形操作,比如绘制图片,设置颜色,填充矩形。另外,图形的转换(Transaction),比如移动、缩放和反转等,平滑的从一个视图或者屏幕过渡(Transition)到另外一个,以及在一个视图或者层中的动画内容。

当需要更强大的2D绘图能力,需要使用Core Graphics框架。它是绘制矢量图、线、形状、模式、渐变、图形,甚至PDF文档的主力。更高层的框架,比如UIKit,使用Core Graphics。

Core Animation是UIKit框架用于层以及过渡的编程接口。大多数时候,开发者不需要直接使用Core Animation。除非当应用中需要细粒度的动画控制。

当开发游戏或者其他需要依赖GPU的高级图形能力时,需要用到OpenGL ES。

基础

要理解在iOS中如何绘制图形,需要阅读如下文档

阅读《View Programming Guide for iOS》,理解比如视图(View)的类族,iOS本地协作系统,以及可在视图上的操作。 
阅读《Drawing and Prnting Guide for iOS》,学习使用UIKit绘图。

下一步

为了实现开发者iOS应用中的图形和动画处理,需要决定在实际应用中使用哪个框架。然后深入了解使用这些框架的示例应用,思考如何运用这些框架的功能和方法组合运用创建自己的项目。

决定使用哪些框架

总的来说,尽量使用高层的框架来实现应用。只有当需要更精确控制或者更强大能力时才使用底层框架。

如果要分层2D内容,可使用UIKit框架的UIView类。该类是构建在Core Animation层之上的。在iOS上,使用视图来分层,比直接使用层Core Animation层更容易。 
如果需要分层内容或者视图的动画,可使用UIKit框架做简单的动画,用Core Animation做更精确的控制。 
如果需要显示图片,可使用UIKit框架提供的UIImage和UIImageView。 
如果需要绘制自定义的矢量图,可使用Core Graphics框架和UIKit框架的UIView类。 
如果需要创建游戏,3D内容,或者应用中需要基于GPU的图形能力,要用到OpenGL ES框架,以及Core Animation框架的CAEAGLLayer类,和UIKit框架中的UIView类。

有关UIKit框架中类的信息,参见《UIKit Framework Reference》。有关Core Graphics框架,参见《Core Graphics Framework Reference》。有关OpenGL ES框架,见《OpenGL ES Framework Reference》。

绘制分层内容

开始绘制分层内容,需要熟悉《UIView Class Reference》,特别是管理视图层次的方法。

然后,在Xcode中打开Metronome示例。看一下在MetronomeView.m文件中的initWithFrame方法,在那里了解如何设置子视图。

动画

开始在应用中加入动画内容,首先要阅读《Animations》。

然后,在Xcode中打开MoveMe示例应用。看MoveMeView.m文件,这里面包含一些动画视图的方法。在animateFirstTouchAtPoint和growAnimationDidStop:finished:context:方法中说明如何在UIView类中设置动画视图。在animatePlacardViewToCenter:方法中使用Core Animation设置关键桢动画。

如果要更进一步,请阅读《Core Animation Programming Guide》。

使用图片

在应用中要开始使用图片,首先需要看《UIImageView Class Reference》和《UIImage Class Reference》。如果想放大图片,需要熟悉《UIScrollView Class Reference》和《UIScrollViewDelegate Protocol Reference》。

使用Quartz 2D绘制自定义内容

要开始绘制2D内容,首先需要阅读《Drawing and Printing Guide for iOS》。然后,需要看一下《CGContext Reference》,这里描述了更多的在绘制图片时使用的函数。

更进一步理解绘制图片的工作原理,需阅读《Overview of Quartz 2D》。可以找到如何执行指定的绘制任务,比如创建模式、路径或者渐进色,可阅读《Quartz 2D Programming Guide》的相关章节。

使用OpenGL ES绘图

开始用OpenGL ES绘图,首先要阅读《OpenGL ES Overview》,由Khronos提供,该组织负责维护OpenGL ES规范。

然后,在Xcode中运行GLSprite示例。可从中的EAGLView.m文件中了解到如何为OpenGL ES内容创建桢缓冲。

如需进一步理解如何在iOS中最合理的使用OpenGL ES,需阅读《OpenGL ES Programming Guide for iOS》


原创粉丝点击