如何创建具有倾斜效果的 NSAffineTransform



我对在可可中绘画很陌生,并且正在开发一个涉及六边形网格的实验性应用程序。为了简化这一点,我想倾斜坐标系,使 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

希望这有帮助!

相关内容

  • 没有找到相关文章

最新更新