自9月份装上黑苹果以来,我就给自己制定了一个小目标――制作一个iPhone版的小游戏,类似于“是男人就下一百层”、“淘金者”之类的。前阵子在啃《Objective-C for Absolute Beginners iPhone, iPad, and Mac Programming
Made
Easy 》,对Obj-C的语法和Xcode的使用算是有了点概念。正捧起《iPhone3开发基础教程》准备大干一场的时候,工作上的事情又让我忙得昏头黑地....
Ok,闲话不多说,要制作一个2D的小游戏,自然要了解Quartz 2D(至于OpenGL ES,我会在后期进行学习)。以下是我对Quartz
2D入门知识进行的整理,源自《iPhone3开发基础教程》和《Quartz 2D Programming
Guide》。在后面的博文中,我再把练手程序的源码贴出来。
- Quartz 2D
Quartz相对比较容易使用,它提供了各种直线、形状以及图像绘制函数。尽管易于使用,但Quartz
2D仅限于二维绘图。尽管许多Quartz函数会在绘图时利用硬件加速,但无法保证在Quartz中执行的任何操作都得到加速。
我们使用Core Graphics C函数,而不是使用Obj-C对象来绘图。Core
Graphics和OpenGL都是基于C的API。
通过下面的链接,可以看到Core Graphics C函数的说明
- 坐标系
上下文左上角为(0,0)向下移动,y增加;向右移动,x增加
- 颜色
你可能在小学学习过,原色包括红色、黄色和蓝色。这些原色(称为历史减法三原色或RYB颜色模型)在现代颜色理论中很少应用,几乎从来没有在计算机图形中使用。RYB颜色模型的色域是非常有限的,并且该模型不容易进行数学定义。在计算机图形环境中的三原色是指红色、绿色和蓝色。
除了红色、绿色和蓝色之外,Quartz 2D和OpenGL
ES都还有另一个颜色组件――alpha,表示颜色的透明程度。若alpha为1.0,则绘制的颜色为100%不透明,若它的值为任何小于1.0的值,则它下面的颜色将能够透过它显示出来,最后获得混合的颜色。
创建颜色:
return [UIColor colorWithRed:1.0f green:0.0f blue:0.0f
alpha:1.0f];
- 绘制图像
使用Quartz
2D,可以在上下文中直接绘制图像。这是Objective-C类(UIImage)的另一个示例。方法是:指定一个CGPoint来确定图像的左上角或者指定一个CGRect来框住图像,并根据需要调整图像大小使其适合该框。如:
CGPoint drawPoint=CGPointMake(100.0f,100.0f);
[image drawAtPoint:drawPoint];
- 绘制形状
Quartz 2D提供了许多函数,简化了复杂形状的创建。例如,绘制椭圆形的方法是,定义它所适合的矩形并让Core
Graphicsc执行以下任务:
CGRect theRect=CGMakeRect(0,0,100,100);
CGContextAddEllipseInRect(context,theRect);
CGContextDrawPath(context,kCGPathFillStroke)