如何重置以使用一些CGContext函数来标识"当前转换矩阵"?

Ari*_*lka 7 cocoa-touch core-graphics matrix

我正在CTM上进行一系列翻译和旋转,在某些时候我需要将其重置为身份,然后再进行转换.

我找不到任何适当的方式做到这一点(当然,也应该有一个名为CGContextSetCTM左右功能),因为效率是关键,我不想使用CGContextSaveGState/CGContextRestoreGState ...

Eig*_*ght 15

通过获取当前变换矩阵CGContextGetCTM,与反其道而行CGAffineTransformInvert和倒一个乘以当前矩阵(这很重要!)与CGContextConcatCTM.CTM现在是身份.

  • 似乎是一个可行的解决方法,但它非常低效.我不明白为什么Apple没有暴露任何功能来直接重置矩阵...... (7认同)
  • @EightyEight:可能是因为Apple希望转换矩阵能够基于链上的转换保持可修改,并希望开发人员编写代码在这些情况下做正确的事情.示例:如果Apple(假设)想要为运行时显示尺寸缩小的游戏实现UI,如Safari的标签视图中的平铺网页,该怎么办?如果开发人员决定在其绘图代码中重置转换矩阵会发生什么?_它不会"只是工作",它看起来像扭曲的废话,那是什么._ (4认同)