资源描述
第第4 4章章图像和绘图图像和绘图+UIView的子类中,我们可以使用固定的形状如UIButton,TextField来绘制用户界面。有时,为了使用户看到的界面生动形象,我们可以自己绘制一个图形。绘制图形的方法有两种:一种是使用UIImageView类来显示一个图像,一种是通过代码来动态的绘制一个图形。本章主要讲解使用代码动态绘制一个图形。4.1 4.1 图像视图的创建图像视图的创建+图像是由一些排列的像素组成的,在计算机中的存储格式有BMP、PCX、TIF、GIFD等,一般数据量比较大。它除了可以表达真实的照片外,也可以表现复杂绘画的某些细节,并具有灵活和富有创造力等特点。我们要在用户界面显示图像,必须要有UIImageView视图才可以,现在我们来为大家讲解图像视图的创建。4.1.1 4.1.1 静态创建图像视图静态创建图像视图+创建一个项目名为400的项目。要静态创建一个图像视图,首先要拖一个UIImageView的视图到ViewController.xib文件的设置界面。再将一个要显示的图像添加到项目中的Supporting Files文件夹中。如果要显示的图像在Supporting Files文件夹中就不需要添加。在这里我们要显示的图像在桌面上,图像名为“114747086.jpg”。图片添加好以后,我们选择“show the Attributes inspector”对话框中Image View选项,将Image设置为要用来显示在用户界面的图像。4.1.2 4.1.2 动态创建图像视图动态创建图像视图+我们不仅可以使用手动创建图像即静态创建图像,还可以动态的创建图像也就是我们所说的使用代码创建图像视图,创建图像视图的形式如图4.3所示。4.2 4.2 图像的属性图像的属性+属性相信大家并不陌生了。我们在使用图像时,为了达到最佳效果,也需要设置图像的属性。本节将主要为大家讲解图像的显示方式、图示的显示位置等相关方面的内容。4.2.1 4.2.1 图像的显示方式图像的显示方式+当我们在ViewController.xib文件中设置用户界面时,将UIImageView拖到设置界面,大家会看到“show the Attributes inspector”选项卡的View中有一个Mode设置,它就是将图像以各种方式进行显示。4.2.1 4.2.1 图像的显示方式图像的显示方式4.2.2 4.2.2 图像的显示位置图像的显示位置+如果我们想要改变图像的位置时,我们可以采用三种方法:frame、center、transform。接下来我们详细的为大家讲解这三种方法。1.FRAME1.FRAME+要想修改图像的位置,我们可以在创建时直接选择我们要将图片放置的位置,使用frame的形式。1.FRAME1.FRAME1.FRAME1.FRAME1.FRAME1.FRAME2.CENTER2.CENTER+我们如果要通过使用图像视图的中间点来改变图像的显示位置。3.TRANSFORM3.TRANSFORM+transform的功能不仅可以改变图像的位置,还可以使图像进行旋转和缩放。3.TRANSFORM3.TRANSFORM3.TRANSFORM3.TRANSFORM3.TRANSFORM3.TRANSFORM4.2.3 4.2.3 图像的其它属性图像的其它属性+以上我们为大家讲解了我们常用到的属性设置。接下来,我们为大家介绍图像的其它属性设置。名称名称功能功能hidden隐藏或显示图像alpha设置透明度highlightedImage设置高亮时显示的图片image设置正常显示的图片4.3 4.3 图像切换图像切换+我们在使用手机查看相册中的图像时,就用到了图片的切换,本节我们将为大家讲解图像和图像之间是如图实现切换的。4.4 4.4 绘图绘图+为了使我们的用户界面看起来很漂亮,我们可以使用代码动态的绘制我们想要的图形。而所有的绘图都必须要通过图形上下文来实现。本节将主要讲解图形上下文和在绘图时所用到的数据类型等相关方面的内容。4.4.1 4.4.1 图形上下文图形上下文+图形上下文(Graphics Context)是一个非常重要的概念。没有它,我们无法对图形设备画任何东西。图形上下文为图形设备提供了上下文,通俗点讲,就是提供了画图环境。所谓图形设备就是对呈现图形的设备的抽象,比如屏幕、打印机等。一般我们用到的图形上下文一共有五种。4.4.1 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 4.4.2 数据类型数据类型+在绘图中,有着它自己特有的数据类型。这些数据类型以功能。数据数据类型型功能功能CGPathRef用于画路径,例如直线(一点到另一点的路径)CGImageRef用于处理图片CGShadingRef阴影CGLayerRef用于处理图层CGFunctionRef定义回调函数CGColorRef处理颜色CGPSConverterRef将PostScript转换为PDFCGDataConsumerRef管理数据CGFontRef字体CGPDFDictionayRef管理PDFCGPDFScannerRef解析PDF格式4.5 4.5 绘制路径绘制路径+路径指的是物体活动的轨迹,我们可以通过不同的路径将我们的图绘制为直线、矩形、圆等不同的形状。本节将主要为大家讲解基本形状的绘制方法。4.5.1 4.5.1 绘制直线绘制直线+要绘制直线,必须要获取当前的图形上下文。只有获取了当前的图形上下文我们才可以绘制图形或修改绘图结果。4.5.1 4.5.1 绘制直线绘制直线4.5.1 4.5.1 绘制直线绘制直线4.5.1 4.5.1 绘制直线绘制直线4.5.2 4.5.2 绘制矩形绘制矩形+直线是我们使用路径指令绘制的最简单的图形。现在我们使用路径中的CGContextAddRect或者是CGContextAddRects来绘制一个矩形。在这里我们使用的是CGContextAddRect绘制矩形。4.5.3 4.5.3 绘制圆绘制圆+在路径指令中使用CGContextAddEllipseInRect指令来绘制圆。4.5.4 4.5.4 其它的路径指令其它的路径指令+以上路径指令是大家经常用到的,以下是路径指令中的其它指令。功能功能指令指令用一个或两个控制点描用一个或两个控制点描绘一条一条贝赛尔曲曲线CGContextAddQuadCurveToPointCGContextAddCurveToToPoint绘制一条制一条圆弧弧CGContextAddArcToPointCGContextAddArc闭合当前路径合当前路径CGContextClosePath这将追加一条连接路径起点和终点的线段。如果打算填充路径,不需要此操作系统会自动实现描描边或填充路径(即把路径画出来)或填充路径(即把路径画出来)CGContextStrokePathCGContextFillPathCGContextEOFillPathCGContextDrawPath同时描边和填充路径清除矩形清除矩形CGContextClearRect4.5.5 IPHONE SIMULATOR4.5.5 IPHONE SIMULATOR不显示绘不显示绘制内容的情况制内容的情况+由于各种意外情况,在编写好程序以后,iPhone Simulator模拟器不会出现我们所绘制的内容,现在我们将一些可能的情况列出,希望大家注意。1.1.运行时运行时+我们在编写好程序以后是不能直接运行的,要将ViewController.xib文件的设置界面所遵循的类改为我们所创建的绘制图形的类一般都被命名为“draw”。2 2.缺少描边或填充路径的指令缺少描边或填充路径的指令+在绘制好图形以后,描边或填充路径的指令是不可缺少的。我们以示例4-12为例,将程序的CGContextStrokePath指令故意缺少,这样iPhone Simulator模拟器就不会显示我们所绘制的图形。3.3.没有指定当前点没有指定当前点+如果我们绘制的图形用到了路径指令中CGContextAddLineToPoint或者是CGContextAddArcToPoint等和点相关的指令时,要指定当前点的位置。我们以示例4-12为例,将指定CGContextMoveToPoint所指定的当前点去掉,这样iPhone Simulator模拟器也不会显示我们所绘制的圆弧。4.64.6绘制位图绘制位图+位图指的是以无数的色彩点组成的图案。当我们将位图无限放大时就会看到一块一块的像素色块,这时效果会失真。本节主要为大家讲解绘制位图的两种方法:一种是CGContextDrawImage,一种是CGContextDrawTiledImage。4.6.1 CGCONTEXTDRAWIMAGE4.6.1 CGCONTEXTDRAWIMAGE绘绘制位图制位图+如果我们要将相应的图片绘制到我们所指定的矩形区域中,那么就要使用CGContextDrawImage方法绘制的位图。4.6.2 4.6.2 CGCONTEXTDRAWTILEDIMAGECGCONTEXTDRAWTILEDIMAGE绘绘制位图制位图+如果想让固定大小的位图平铺某个区域,就要使用CGContextDrawTiledImage设置所要绘制的图形。4.6.2 4.6.2 CGCONTEXTDRAWTILEDIMAGECGCONTEXTDRAWTILEDIMAGE绘绘制位图制位图4.74.7阴影阴影+有时,为了让绘制的图形更有立体感,我们就要为图形加上阴影。为了在绘图中添加阴影,需要在绘图前给图形上下文设置阴影,设置阴影的方法通常为CGContextSetShadow。4.84.8绘制文字绘制文字+一般我们使用textField或者是Text View视图书写的文字不能直接达到我们想要的效果,所以我们就使用代码动态的绘制文字。本节将主要为大家讲解有关文字中的选择文字、设置绘制的模式、设置文字转换矩阵、绘制文字等相关方面的内容。4.8.1 4.8.1 选择字体选择字体+要绘制一个文字,首选要进行字体的选择,我们可以使用CGContextSelectFont选择我们想要的字体。4.8.2 4.8.2 设置文字绘制模式设置文字绘制模式+文字的绘制模式一般使用CGContextSetTextDrawingMode来设置。4.8.3 4.8.3 设置字体变换矩阵设置字体变换矩阵+CGContextSetTextMatrix的功能是设置字体转变的矩阵,也是为了防止字体倒立。4.8.4 4.8.4 绘制文字绘制文字+当我们按以上过程都设置好以后就可以绘制文字啦,我们使用CGContextShowTextAtPoint来绘制文字。4.8.5 4.8.5 文字的综合应用文字的综合应用+以上的内容是文字的基本设置方法,现在我们就来使用CGContextSelectFont将字体设置为Helvetica,字体大小为36.0,编码格式为kCGEncodingMacRoman。使用CGContextSetTextMatrix设置矩阵的平移。使用CGContextSetTextDrawingMode设置字体的绘制模式,并将使用者三种绘制模式的字体所用CGContextShowTextAtPoint进行绘制。4.94.9小结小结+本章主要为大家讲解了使用绘图形式的两种方法:一种是使用UIImageView类来显示一个图像,一种是通过代码来动态的绘制一个图形。本章的重点是图像的属性设置和绘制路径。希望读者可以使用代码来动态的绘制图形,创建出一个不一样的用户界面。
展开阅读全文