当前位置:
文档之家› 轻松学iPhone开发之图像和绘图
轻松学iPhone开发之图像和绘图
图像视图对象.transform=CGAffineTransformMakeScale(CGFloat scale_w, CGFloat scale_h);
+ 以上我们为大家讲解了我们常用到的属性
设置。接下来,我们为大家介绍图像的其 它属性设置。
名称 hidden alpha 功能 隐藏或显示图像 设置透明度
+ 我们不仅可以使用手动创建图像即静态创
建图像,还可以动态的创建图像也就是我 们所说的使用代码创建图像视图,创建图 像视图的形式如图4.3所示。
UIImageView *对象名=[[UIImageView alloc]initWithImage: [UIImage imageNamed:图像的名称]]; 为图像视图初始化一张图像
+ 位图指的是以无数的色彩点组成的图案。
当我们将位图无限放大时就会看到一块一 块的像素色块,这时效果会失真。本节主 要为大家讲解绘制位图的两种方法:一种 是CGContextDrawImage,一种是 CGContextDrawTiledImage。
+ 如果我们要将相应的图片绘制到我们所指
定的矩形区域中,那么就要使用 CGContextDrawImage方法绘制的位图。
矩形的位置和大小
+ 在路径指令中使用
CGContextAddEllipseInRect指令来绘制圆。
CGContextAddEllipseInRect(contextRef c,CGRect rect);
圆的位置和大小
+ 以上路径指令是大家经常用到的,以下是
路径指令中的其它指令。
功能 用一个或两个控制点描绘一条贝赛尔曲线 绘制一条圆弧 指令 CGContextAddQuadCurveToPoint CGContextAddCurveToToPoint CGContextAddArcToPoint CGContextAddArc 这将追加一条连接路径起点和终 点的线段。如果打算填充路径, 不需要此操作系统会自动实现
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat heigth);
位置
大小
图像视图对象名.frame = CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat heigth);
+ 创建一个项目名为400的项目。要静态创建一
个图像视图,首先要拖一个UIImageView的视 图到ViewController.xib文件的设置界面。再将 一个要显示的图像添加到项目中的Supporting Files文件夹中。如果要显示的图像在 Supporting Files文件夹中就不需要添加。在这 里我们要显示的图像在桌面上,图像名为 “114747086.jpg”。图片添加好以后,我们选 择“show the Attributes inspector”对话框中 Image View选项,将Image设置为要用来显示 在用户界面的图像。
CGContextDrawImage(CGContextRef c, CGRect rect, CGImageRef image);
当前图形上下文 绘图区域 想要绘制的位图
+ 如果想让固定大小的位图平铺某个区域,
就要使用CGContextDrawTiledImage设置所 要绘制的图形。
CGContextDrawTiledImage(CGContextRef c, CGRect rect, CGImageRef image); 当前图形上下文 平铺位图的大小 想要绘制的位图
+ 要绘制直线,必须要获取当前的图形上下
文。只有获取了当前的图形上下文我们才 可以绘制图形或修改绘图结果。
CGContextRef 当前图形上下文名=UIGraphicsGetCurrentContext();
CGContextAddLineToPoint(CGContextRef c,CGFloat x,CGFloat y);//设置线段的起点 CGContextMoveLineToPoint(CGContextRef c,CGFloat x,CGFloat y);//设置线段的终点
+ UIView的子类中,我们可以使用固定的形
状如UIButton,TextField来绘制用户界面。 有时,为了使用户看到的界面生动形象, 我们可以自己绘制一个图形。绘制图形的 方法有两种:一种是使用UIImageView类来 显示一个图像,一种是通过代码来动态的 绘制一个图形。本章主要讲解使用代码动 态绘制一个图形。
CGPSConverterRef CGDataConsumerRef CGFontRef
处理颜色
将PostScript转换为PDF 管理数据 字体
CGPDFDictionayRef
CGPDFScannerRef
管理PDF
解析PDF格式
+ 路径指的是物体活动的轨迹,我们可以通
过不同的路径将我们的图绘制为直线、矩 形、圆等不同的形状。本节将主要为大家 讲解基本形状的绘制方法。
CGContextDrawTiledImage(CGContextRef c, CGRect rect, CGImageRef image);
当前图形上下文
区域的位置和大小
图片
+ 有时,为了让绘制的图形更有立体感,我
们就要为图形加上阴影。为了在绘图中添 加阴影,需要在绘图前给图形上下文设置 阴影,设置阴影的方法通常为 CGContextSetShadow。
+ transform的功能不仅可以改变图像的位置,
还可以使图像进行旋转和缩放。
图像视图对象名.transform=CGAffineTransformMakeTranslation(CGFloat dx, CGFloat dy);
图像视图对象名.transform = CGAffineTransformMakeRotation(CGFloat angle);
+ 属性相信大家并不陌生了。我们在使用图
像时,为了达到最佳效果,也需要设置图 像的属性。本节将主要为大家讲解图像的 显示方式、图示的显示位置等相关方面的 内容。
+ 当我们在ViewController.xib文件中设置用户
界面时,将UIImageView拖到设置界面,大 家会看到“show the Attributes inspector”选 项卡的View中有一个Mode设置,它就是将 图像以各种方式进行显示。
CGContextSetShadow(CGContextRef, CGSize offset, CGFloat blur);
阴影的位置
模糊值
+ 一般我们使用textField或者是Text View视图
+ 图像是由一些排列的像素组成的,在计算
机中的存储格式有BMP、PCX、TIF、GIFD 等,一般数据量比较大。它除了可以表达 真实的照片外,也可以表现复杂绘画的某 些细节,并具有灵活和富有创造力等特点。 我们要在用户界面显示图像,必须要有 UIImageView视图才可以,现在我们来为大 家讲解图像视图的创建。
令是不可缺少的。我们以示例4-12为例,将 程序的CGContextStrokePath指令故意缺少, 这样iPhone Simulator模拟器就不会显示我 们所绘制的图形。
+ 如果我们绘制的图形用到了路径指令中
CGContextAddLineToPoint或者是 CGContextAddArcToPoint等和点相关的指令 时,要指定当前点的位置。我们以示例4-12 为例,将指定CGContextMoveToPoint所指 定的当前点去掉,这样iPhone Simulator模 拟器也不会显示我们所绘制的圆弧。
+ 图形上下文(Graphics Context)是一个非
常重要的概念。没有它,我们无法对图形 设备画任何东西。图形上下文为图形设备 提供了上下文,通俗点讲,就是提供了画 图环境。所谓图形设备就是对呈现图形的 设备的抽象,比如屏幕、打印机等。一般 我们用到的图形上下文一共有五种。
名称
功能 位图图形上下文(Bitmap graphics context) 允许用户绘制RGB或者CMYK颜色,或者调整一张位 图的灰度 PDF图形上下文(PDF graphics context) 窗口文件图形上下文(Window graphics context) 图层图形上下文(Layer graphics context) PostScript graphics context 可以让用户创建PDF文件。PDF文件是Adobe公司的 矢量绘图协议,可以直接打印 可以让用户图形上下文绘制到窗口,前提是用户必 须会在此窗口获取相应的图形上下文 绘制到图层里面 针对打印
+ 直线是我们使用路径指令绘制的最简单的
图形。现在我们使用路径中的 CGContextAddRect或者是 CGContextAddRects来绘制一个矩形。在这 里我们使用的是CGContextAddRect绘制矩 形。
CGContextAddRect(contextRef c, CGRect rect);
图像的显示方式
+ 如果我们想要改变图像的位置时,我们可
以采用三种方法:frame、center、transform。 接下来我们详细的为大家讲解这三种方法。
+ 要想修改图像的位置,我们可以在创建时
直接选择我们要将图片放置的位置,使用 frame的形式。
UIImageView *对象名 = [[UIImageView alloc] initWithFrame:(CGRect)];
图像视图对象名.bounds = CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat heigth);