Quartz2D绘图一

来源:互联网 发布:淘宝软文引流怎么写 编辑:程序博客网 时间:2024/05/21 10:22

UIImage虽然可以加载、显示各种格式的位图,甚至可以同时加载图片,接下来依次播放多张图片形成动画。但UIImage的功能有限,它不能对图片进行缩放、旋转,不能“挖取”源图片的制定区域等。这些功能可借助Quartz 2D 的CGImageRef 来实现。


UIImage与CGImageRef之间可以相互转换。 CGImageRef 并不是面相对象的API,也不是类,只是一个指针类型。
UIImage转换为CImageRef 代码如下:

UIImage *image =...CGImageRef ciRef =[image CGImage];

CImageRef 转换为UIImage代码如下:

CGImageRef ciRef =...UIImage *image =[UIImage imageWithCGimage:ciRef];

Quartz 2D 绘图基础:CGContextRef


1,自定义UIView时获取CGContextRef
开发自定义UIView的方法是,开发一个继承UIView的字累,并重写该UIView的drawRect:方法,当该UIView每次显示出来时,或该UIView的内容需要更新时,系统都会自动调用改UIView的drawRect:方法。在调用drawRect:方法之前,系统会自动配置绘图环境。因此,程序只要通过如下函数即可获取 CGContextRef绘图API

CGrectRef ctx =UIGraphicsGetCurrentContext();

获取CGContextRef 之后,即可进行绘图。
需要指出的是,重写UIView的drawRect:方法绘图时,它的绘图API的坐标原点位于该控件的左上角,横向为X轴,X坐标越大,位置越向右;纵向为Y轴,Y轴坐标越大,位置越向下。

2,创建位图时获取CGContextRef
如果需要在创建位图时获取CGContextRef,那么程序需要先调用UIGraphicsBeginImageContext()函数来创建内存中的图片。然后才能调用UIGraphicsGetCurrentContext()获取绘图的CGContextRef。
代码如下:

//创建内存图片UIGraphicsBeginImageContext(CGSizeMake(320,480));//获取向内存中图片执行绘图的CGContextRefCGContextRef ctx =UIGraphicsgetCurrentContext();
       Quartz 2D 的绘图相关函数

这里写图片描述

上表中的大部分方法都涉及使用路径,路径由另一个API:CGPathRef来代表。
CGPathRef代表任意多条直线或者曲线连接而成的任意图形,当CGContextRef根据CGPathRef绘制时,它可以绘制出任意的形状。
在绘图之前,还需要对绘图的颜色,线条粗细等属性进行设置,Quartz2D提供了下面设置绘图属性的相关函数。
这里写图片描述
这里写图片描述

0 0
原创粉丝点击