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 + 图片宽)。这样就能在相同的位置呈现正确的图片。
网友评论