资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2013/1/7,:,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第4章 图像和绘图,UIView的子类中,我们可以使用固定的形状如UIButton,TextField来绘制用户界面。有时,为了使用户看到的界面生动形象,我们可以自己绘制一个图形。绘制图形的方法有两种:一种是使用UIImageView类来显示一个图像,一种是通过代码来动态的绘制一个图形。本章主要讲解使用代码动态绘制一个图形。,4.1 图像视图的创建,图像是由一些排列的像素组成的,在计算机中的存储格式有BMP、PCX、TIF、GIFD等,一般数据量比较大。它除了可以表达真实的照片外,也可以表现复杂绘画的某些细节,并具有灵活和富有创造力等特点。我们要在用户界面显示图像,必须要有UIImageView视图才可以,现在我们来为大家讲解图像视图的创建。,4.1.1 静态创建图像视图,创建一个项目名为400的项目。要静态创建一个图像视图,首先要拖一个UIImageView的视图到ViewController.xib文件的设置界面。再将一个要显示的图像添加到项目中的Supporting Files文件夹中。如果要显示的图像在Supporting Files文件夹中就不需要添加。在这里我们要显示的图像在桌面上,图像名为“114747086.jpg”。图片添加好以后,我们选择“show the Attributes inspector对话框中Image View选项,将Image设置为要用来显示在用户界面的图像。,4.1.2 动态创建图像视图,我们不仅可以使用手动创建图像即静态创建图像,还可以动态的创建图像也就是我们所说的使用代码创建图像视图,创建图像视图的形式如图4.3所示。,4.2 图像的属性,属性相信大家并不陌生了。我们在使用图像时,为了达到最佳效果,也需要设置图像的属性。本节将主要为大家讲解图像的显示方式、图示的显示位置等相关方面的内容。,4.2.1 图像的显示方式,当我们在ViewController.xib文件中设置用户界面时,将UIImageView拖到设置界面,大家会看到“show the Attributes inspector选项卡的View中有一个Mode设置,它就是将图像以各种方式进行显示。,4.2.1 图像的显示方式,4.2.2 图像的显示位置,如果我们想要改变图像的位置时,我们可以采用三种方法:frame、center、transform。接下来我们详细的为大家讲解这三种方法。,1.frame,要想修改图像的位置,我们可以在创建时直接选择我们要将图片放置的位置,使用frame的形式。,1.frame,1.frame,1.frame,2 动态创建图像视图,为了在绘图中添加阴影,需要在绘图前给图形上下文设置阴影,设置阴影的方法通常为CGContextSetShadow。,xib文件的设置界面所遵循的类改为我们所创建的绘制图形的类一般都被命名为“draw”。,我们在编写好程序以后是不能直接运行的,要将ViewController.,没有它,我们无法对图形设备画任何东西。,CGContextAddArc,我们不仅可以使用手动创建图像即静态创建图像,还可以动态的创建图像也就是我们所说的使用代码创建图像视图,创建图像视图的形式如图4.,本节主要为大家讲解绘制位图的两种方法:一种是CGContextDrawImage,一种是CGContextDrawTiledImage。,UIView的子类中,我们可以使用固定的形状如UIButton,TextField来绘制用户界面。,5 iPhone Simulator不显示绘制内容的情况,图形上下文为图形设备提供了上下文,通俗点讲,就是提供了画图环境。,如果我们绘制的图形用到了路径指令中CGContextAddLineToPoint或者是CGContextAddArcToPoint等和点相关的指令时,要指定当前点的位置。,文字的绘制模式一般使用CGContextSetTextDrawingMode来设置。,现在我们使用路径中的CGContextAddRect或者是CGContextAddRects来绘制一个矩形。,只有获取了当前的图形上下文我们才可以绘制图形或修改绘图结果。,CGContextClosePath,UIView的子类中,我们可以使用固定的形状如UIButton,TextField来绘制用户界面。,2.center,我们如果要通过使用图像视图的中间点来改变图像的显示位置。,3.transform,transform的功能不仅可以改变图像的位置,还可以使图像进行旋转和缩放。,3.transform,3.transform,3.transform,4.2.3 图像的其它属性,以上我们为大家讲解了我们常用到的属性设置。接下来,我们为大家介绍图像的其它属性设置。,名称,功能,hidden,隐藏或显示图像,alpha,设置透明度,highlightedImage,设置高亮时显示的图片,image,设置正常显示的图片,图像是由一些排列的像素组成的,在计算机中的存储格式有BMP、PCX、TIF、GIFD等,一般数据量比较大。,图层图形上下文(Layer graphics context),本节将主要为大家讲解图像的显示方式、图示的显示位置等相关方面的内容。,它除了可以表达真实的照片外,也可以表现复杂绘画的某些细节,并具有灵活和富有创造力等特点。,CGContextAddArc,将PostScript转换为PDF,CGContextClosePath,现在我们使用路径中的CGContextAddRect或者是CGContextAddRects来绘制一个矩形。,图像是由一些排列的像素组成的,在计算机中的存储格式有BMP、PCX、TIF、GIFD等,一般数据量比较大。,所谓图形设备就是对呈现图形的设备的抽象,比如屏幕、打印机等。,要静态创建一个图像视图,首先要拖一个UIImageView的视图到ViewController.,文字的绘制模式一般使用CGContextSetTextDrawingMode来设置。,本章主要为大家讲解了使用绘图形式的两种方法:一种是使用UIImageView类来显示一个图像,一种是通过代码来动态的绘制一个图形。,2 设置文字绘制模式,1 静态创建图像视图,4.3 图像切换,我们在使用 查看相册中的图像时,就用到了图片的切换,本节我们将为大家讲解图像和图像之间是如图实现切换的。,4.4 绘图,为了使我们的用户界面看起来很漂亮,我们可以使用代码动态的绘制我们想要的图形。而所有的绘图都必须要通过图形上下文来实现。本节将主要讲解图形上下文和在绘图时所用到的数据类型等相关方面的内容。,4.4.1 图形上下文,图形上下文Graphics Context是一个非常重要的概念。没有它,我们无法对图形设备画任何东西。图形上下文为图形设备提供了上下文,通俗点讲,就是提供了画图环境。所谓图形设备就是对呈现图形的设备的抽象,比如屏幕、打印机等。一般我们用到的图形上下文一共有五种。,4.4.1 图形上下文,名称,功能,位图图形上下文(,Bitmap graphics context,),允许用户绘制,RGB,或者,CMYK,颜色,或者调整一张位图的灰度,PDF,图形上下文(,PDF graphics context,),可以让用户创建,PDF,文件。,PDF,文件是,Adobe,公司的矢量绘图协议,可以直接打印,窗口文件图形上下文(,Window graphics context,),可以让用户图形上下文绘制到窗口,前提是用户必须会在此窗口获取相应的图形上下文,图层图形上下文(,Layer graphics context,),绘制到图层里面,PostScript graphics context,针对打印,4.4.2 数据类型,在绘图中,有着它自己特有的数据类型。这些数据类型以功能。,数据类型,功能,CGPathRef,用于画路径,例如直线(一点到另一点的路径),CGImageRef,用于处理图片,CGShadingRef,阴影,CGLayerRef,用于处理图层,CGFunctionRef,定义回调函数,CGColorRef,处理颜色,CGPSConverterRef,将,PostScript,转换为,PDF,CGDataConsumerRef,管理数据,CGFontRef,字体,CGPDFDictionayRef,管理,PDF,CGPDFScannerRef,解析,PDF,格式,4.5 绘制路径,路径指的是物体活动的轨迹,我们可以通过不同的路径将我们的图绘制为直线、矩形、圆等不同的形状。本节将主要为大家讲解基本形状的绘制方法。,4.5.1 绘制直线,要绘制直线,必须要获取当前的图形上下文。只有获取了当前的图形上下文我们才可以绘制图形或修改绘图结果。,4.5.1 绘制直线,4.5.1 绘制直线,4.5.1 绘制直线,4.5.2 绘制矩形,直线是我们使用路径指令绘制的最简单的图形。现在我们使用路径中的CGContextAddRect或者是CGContextAddRects来绘制一个矩形。在这里我们使用的是CGContextAddRect绘制矩形。,4.5.3 绘制圆,在路径指令中使用CGContextAddEllipseInRect指令来绘制圆。,4.5.4 其它的路径指令,以上路径指令是大家经常用到的,以下是路径指令中的其它指令。,功能,指令,用一个或两个控制点描绘一条贝赛尔曲线,CGContextAddQuadCurveToPoint,CGContextAddCurveToToPoint,绘制一条圆弧,CGContextAddArcToPoint,CGContextAddArc,闭合当前路径,CGContextClosePath,这将追加一条连接路径起点和终点的线段。如果打算填充路径,不需要此操作系统会自动实现,描边或填充路径(即把路径画出来),CGContextStrokePath,CGContextFillPath,CGContextEOFillPath,CGContextDrawPath,同时描边和填充路径,清除矩形,CGContextClearRect,4.5.5 iPhone Simulator不显示绘制内容的情况,由于各种意外情况,在编写好程序以后,iPhone Simulator模拟器不会出现我们所绘制的内容,现在我们将一些可能的情况列出,希望大家注意。,1.运行时,我们在编写好程序以后是不能直接运行的,要将ViewController.xib文件的设置界面所遵循的类改为我们所创建的绘制图形的类一般都被命名为“draw”。,2.缺少描边或填充路径的指令,在绘制好图形以后,描边或填充路径的指令是不可缺少的。我们以示例4-12为例,将程序的CGContextStrokePath指令故意缺少,这样iPhone Simulator模拟器就不会显示我们所绘制的图形。,3.没有指定当前点,如果我们绘制的图形用到了路径指令中CGContextAddLineToPoint或者是CGContextAddArcToPoint等和点相关的指令时,要指定当前点的位置。我们以示例4-12为例,将指定CGContextMoveToPoint所指定的当前点去掉,这样iPhone Simulator模拟器也不会显示我们所绘制的圆弧。,4.6 绘制位图,位图指的是以无数的色彩点组成的图案。当我们将位图无限放大时就会看到一块一块的像素色块,这时效果会失真。本节主要为大家讲解绘制位图的两种方法:一种是CGContextDrawImage,一种是CGContextDrawTiledImage。,4.6.1 CGContextDrawImage绘制位图,如果我们要将相应的图片绘制到我们所指定的矩形区域中,那
展开阅读全文