来源:http://hi.baidu.com/zhuimeng%C2%E6/blog/item/ac4ba21fac41bf5043a9addb.html
Quartz转换实现的原理:Quartz把绘图分成两个部分, 用户空间,即和设备无关, 设备空间,用户空间和设备空间中间存在一个转换矩阵 : CTM本章实质是讲解CTM
Quartz提供的3大功能移动,旋转,缩放
演示如下,首先加载一张图片void CGContextDrawImage (
CGContextRef c,
CGRect rect,
CGImageRef image
);
移动函数CGContextTranslateCTM (myContext, 100, 50);
旋转函数include <math.h>
static inline double radians (double degrees) {return degrees * M_PI/180;}CGContextRotateCTM (myContext, radians(–45.));
缩放CGContextScaleCTM (myContext, .5, .75);
翻转, 两种转换合成后的效果,先把图片移动到右上角,然后旋转180度CGContextTranslateCTM (myContext, w,h);
CGContextRotateCTM (myContext, radians(-180.));
组合几个动作CGContextTranslateCTM (myContext, w/4, 0);
CGContextScaleCTM (myContext, .25, .5);
CGContextRotateCTM (myContext, radians ( 22.));
CGContextRotateCTM (myContext, radians ( 22.));
CGContextScaleCTM (myContext, .25, .5);CGContextTranslateCTM (myContext, w/4, 0);
上面是通过直接修改当前的ctm实现3大效果,下面是通过创建Affine Transforms,然后连接ctm实现同样的3种效果这样做的好处是可以重用这个Affine Transforms应用Affine Transforms 到ctm的函数void CGContextConcatCTM (
CGContextRef c,
CGAffineTransform transform
);
Quartz提供的3大功能移动,旋转,缩放
演示如下,首先加载一张图片void CGContextDrawImage (
CGContextRef c,
CGRect rect,
CGImageRef image
);
![Transforms(未完) - happy dog - 又一个部落格 Transforms(未完) - happy dog - 又一个部落格](https://i-blog.csdnimg.cn/blog_migrate/cf33814d935fd4638bce6793e3f946ad.gif)
移动函数CGContextTranslateCTM (myContext, 100, 50);
![Transforms(未完) - happy dog - 又一个部落格 Transforms(未完) - happy dog - 又一个部落格](https://i-blog.csdnimg.cn/blog_migrate/baecfbb214ae2882f8e598b5c9b3d43b.gif)
旋转函数include <math.h>
static inline double radians (double degrees) {return degrees * M_PI/180;}CGContextRotateCTM (myContext, radians(–45.));
![Transforms(未完) - happy dog - 又一个部落格 Transforms(未完) - happy dog - 又一个部落格](https://i-blog.csdnimg.cn/blog_migrate/6f7db8ae88915aa3a1e58b0ce817563c.gif)
缩放CGContextScaleCTM (myContext, .5, .75);
![Transforms(未完) - happy dog - 又一个部落格 Transforms(未完) - happy dog - 又一个部落格](https://i-blog.csdnimg.cn/blog_migrate/ad8691132a1e4e8bb8c6c2206d95e161.gif)
翻转, 两种转换合成后的效果,先把图片移动到右上角,然后旋转180度CGContextTranslateCTM (myContext, w,h);
CGContextRotateCTM (myContext, radians(-180.));
![Transforms(未完) - happy dog - 又一个部落格 Transforms(未完) - happy dog - 又一个部落格](https://i-blog.csdnimg.cn/blog_migrate/56ca2ec6bb654d054e183923e795bf70.gif)
组合几个动作CGContextTranslateCTM (myContext, w/4, 0);
CGContextScaleCTM (myContext, .25, .5);
CGContextRotateCTM (myContext, radians ( 22.));
![Transforms(未完) - happy dog - 又一个部落格 Transforms(未完) - happy dog - 又一个部落格](https://i-blog.csdnimg.cn/blog_migrate/aceeb127b9fbc71e8588980d26836136.gif)
CGContextRotateCTM (myContext, radians ( 22.));
CGContextScaleCTM (myContext, .25, .5);CGContextTranslateCTM (myContext, w/4, 0);
![Transforms(未完) - happy dog - 又一个部落格 Transforms(未完) - happy dog - 又一个部落格](https://i-blog.csdnimg.cn/blog_migrate/974087b2de6ec5c3f3e41cc4de1a88c7.gif)
上面是通过直接修改当前的ctm实现3大效果,下面是通过创建Affine Transforms,然后连接ctm实现同样的3种效果这样做的好处是可以重用这个Affine Transforms应用Affine Transforms 到ctm的函数void CGContextConcatCTM (
CGContextRef c,
CGAffineTransform transform
);