我对在可可中绘画很陌生,并且正在开发一个涉及六边形网格的实验性应用程序。为了简化这一点,我想倾斜坐标系,使 Y 轴向左旋转 30 度。我在Apple的Cocoa绘图指南中遇到了这个问题,这表明这是可能的:
将非均匀缩放转换与旋转转换相结合也会使内容产生倾斜效果。
但是,我不明白这将如何工作,也无法找到任何示例。
如何设置 NSAffineTransform,使 X 轴保持水平,Y 轴顺时针旋转 30 度?
不幸的是,没有像转换、旋转等那样简单的方法可以做到这一点。
您必须创建一个转换矩阵:
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
希望这有帮助!