如何创建具有偏斜效果的NSAffineTransform?

时间:2012-10-05 18:50:58

标签: cocoa graphics

我很擅长使用Cocoa绘图,并且正在开发一个涉及六边形网格的实验应用程序。为了简化这一点,我想扭曲坐标系,使Y轴向左旋转30度。我在Apple的Cocoa Drawing Guide中看到了这一点,这表明它是可能的:

  

将非均匀缩放变换与旋转变换相结合也可以使您的内容产生偏斜效果。

但是,我无法理解这是如何工作的,或找到任何示例。

如何设置NSAffineTransform以使X轴保持水平,Y轴逆时针旋转30度?

1 个答案:

答案 0 :(得分:2)

不幸的是,没有像转换,旋转等那样简单的方法。

你必须创建一个变换矩阵:

0            tan(skewy)   0
tan(skewx)   0            0
0            0            1

setTransformStruct:NSAffineTransformStruct

一起使用
typedef struct _NSAffineTransformStruct {
  CGFloat m11, m12, m21, m22;
  CGFloat tX, tY;
} NSAffineTransformStruct;

对于倾斜,m11,m22,tx和ty为零; m12是tan(skewx),m21是tan(skewy)

Apple的文档中有关于矩阵的更多信息:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaDrawingGuide/Transforms/Transforms.html#//apple_ref/doc/uid/TP40003290-CH204-BCIIICJI

希望这有帮助!