绘制图形(上)

1、图像处理介绍

     iOS提供了一系列的图形图像技术,这是建立动人的视觉体验的基础。特定的框架处理2D,3D和动画效果,能够让您的程序访问iPhone和iPod touch卓越的图形功能。在图像渲染里,GPU的好坏一定程度上决定的图像渲染的能力。

(1)iOS图像处理:



(2)Quartz 2D核心概念

上下文:主要用于描述图形写入哪里,该过程由CGContextRef类定义,通常可以写入UIView或者内存

              位图。在操作图形过程中,图层(layer)绘图的工作区域可以相互重叠,构建非常复杂的图形,比如在word、               ppt等编辑工具中出现的图层概念是一样的,但是在iPhone开发过程中,一般只需要关心单图层。

路径:是在图层上绘制的内容,可以是一个点、线、圆、矩形等也可以是一幅图像,还可以在图形中填充内容,比如喷            漆、背景等功能。

状态:用于保存配置变换的值、填充和轮廓、alpha值等,在iOS中使用CGContextSaveState类存储状态,使用 

           CGContextRestoreGState类回复当前状态,通过这种方式可以在复杂的绘制程序中实现轻松切换。

坐标:以下是两种不同的坐标

图形上下文的处理:在Stack上创建,当新建一个图形设备上下文时,它将被压入Stack的顶部,使用完成后,它会从

                                Stack的顶部弹出;这表明,如果创建新的图形设备上下文,它将放在现有的图形设备上下文的上

                                面,直到使用完成后才会被释放。

图形上下文处理的相关函数:UIGraphicGetCurrentContext   返回当前上下文,通常指当前UIKit对象的上下文

                  UIGraphicBeginImageContext    创建位图设备上下文 参数为CGSize

                  UIGraphicEndImageContext     从Stack中弹出一个位图设备上下文

                  CGPDFContextCreate    创建PDF上下文   参数为:CGDataConsumerRef, CGRect,CGDictionaryRef

                  UIGraphicGetImageFromCurrentImageContext   返回一个UIImage的位图,仅适用于位图上下文

2、在上下文中绘图

(1)绘制路径

     相关函数

      设置线条宽度

      -(void)CGContextSetLineWidth(CGContextRef c,CGFloat width);

      设置画笔颜色

      -(void)CGContextSetStrokeColorWithColor(CGContextRef c,CGColorRef color);

      设置背景填充颜色

      -(void)CGContextSetFillColorWithColor(CGContextRef c,CGColorRef color);

      绘制线条

      -(void)CGContextAddLineToPoint(CGContextRef c,CGFloat x,CGFloat y);

      绘制圆

      -(void)CGContextAddEllipseInRect(CGContextRef context,CGRect rect);

      绘制矩形

      -(void)CGContextAddRect(CGContextRef c,CGRect rect);

(2)绘制图片

     有两种方法:

     一种是用底层的渲染,UIImage方法实现

     //在指定的位置绘图

     -(void)drawAtPoint:(CGPoint)point;

     //在指定区域绘图

     -(void)drawInRect:(CGRect)rect;

      另一种是在UIKit框架里面完成一些顶端的设置,例如用Quartz 2D绘制

      -(void)CGContextDrawImage(CGContextRef c,CGRect rect,CGImageRef image);

     (因两种方法坐标系不同,所以Quartz 2D绘制出的图形是倒置的,需要调用CGContextTranslateCTM和CGContextScaleCTM来设置坐标原点和显示比例)

(3)绘制文字

       一种方法是:在屏幕上特定的位置以指定的字体绘制单行的文本

      -(CGSize)drawAtPoint:(CGPoint)point  withFont:(UIFont *)font;

      -(CGSize)drawInRect:(CGRect)rect  withFont:(UIFont *)font;

      另一种方法是Quartz 2D文字绘制

      //选择绘制的字体

      -(void)CGContextSelectFont(CGContextRef context,const char*name,CGFloat size,CGTextEncoding textEncoding);

     //设置文字的绘制方式

      -(void)CGContextSetTextDrawingMode(CGContextRef c,CGTextDrawingMode mode)

     //第二个参数代表绘制的模式,可以为kCGTextFill(填充)kCGTextStroke(描边)或kCGTextFillStroke(即填充又描边)

     //设置文字变换矩阵

     -(void)CGContextShowTextAtPoint(CGContextRef c,CGFloat x,CGFloat y,const char*string,size_t length);


       下一篇以例子来说明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值