# Core Graphics 学习(二) 坐标转换

Core Graphics 学习系列总结自 Quartz 2D Programming Guide
代码语言环境: Swift3.0 Xcode 8.3

Quartz 坐标转换函数

可以进行反转,缩放,旋转等操作. QuartZ 2D API 提供了五个函数,允许获取和需改CTM.

在绘制图像之前,您可以操纵CTM旋转,缩放或翻译页面, 从而转换要绘制的对象. 在转换CTM之前, 需要保存图形状态, 以便您可以在绘制后进行恢复.

坐标系的原始点X向上100, 向右50

contextRef!.translateBy(x: 100, y: 50)

顺时针旋转 45度

let rotateDegress = -45 contextRef!.rotate(by: CGFloat(rotateDegress))

缩放. 原点不点

contextRef!.scaleBy(x:0.5 ,y: 0.75)

更多的效果可以通过这几种方式结合进行转化。

坐标系转换实例
坐标系转换:

//: MARK: 将当前坐标系进行操作func transformCurrent(_ context: CGContext, rect: CGRect) { // 改变用户坐标系统的起点 context.translateBy(x: 0, y: 50 + 50 + rect.size.width - 100) // 旋转 //context.rotate(by: CGFloat(-180 Double.pi / 180)) // 缩放 context.scaleBy(x: 1, y: -1)}

如果使用方法一的话绘制的图片是倒立的,因为绘图默认坐标系的原因。所以需要通过坐标系变换将其转换成为正确的。context.scaleBy(x: 1, y: -1) 将 y -1 相当于沿x轴旋转180°;context.translateBy(x: 0, y: 50 + 50 + rect.size.width - 100) ,将原点的 y 坐标 设置为图片绘制的起始y+(起始y + 图片宽)。这样就能在相同的位置呈现正确的图片。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容