美文网首页
# Core Graphics 学习(二) 坐标转换

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

作者: toro宇 | 来源:发表于2018-07-30 17:29 被阅读14次

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

    相关文章

      网友评论

          本文标题:# Core Graphics 学习(二) 坐标转换

          本文链接:https://www.haomeiwen.com/subject/jeofvftx.html