将UIImage扭曲成平行四边形

时间:2013-02-13 01:16:21

标签: ios objective-c uiimage catransform3d 2.5d

我有一个由函数产生的UIImage。它类似于以下内容。

image1.image = [self reflectedImage:img];

其中image1是UIImage控件。在将其插入image1之前,我想进一步将其向右或向左扭曲成平行四边形,如下所示。所以我只想重新安置c和d点。

enter image description here

我在这里和那里读过几十篇文章。我不确定我是否可以用 CGAffineTransformMake 来做到这一点。 This web page表明我可以。不幸的是,没有示例项目可以看看它是如何工作的。不幸的是,我还没有找到一个网站向我展示如何将简单的矩形图像扭曲成平行四边形。那么最简单的方法是什么?我是否需要创建图层才能使用 CATransform3D

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我发现了另一种方法,它比本主题中的另一种方式更简单。只需将此转换应用于您的视图:

imgView.transform = CGAffineTransformMake(1.0, 0.0, proportion, 1.0, 0.0, 0.0);

其中比例介于-1和1之间

这称为剪切变换,请查看下面的链接了解更多

http://iphonedevelopment.blogspot.it/2008/10/cgaffinetransform-11-little-more.html

答案 1 :(得分:0)

您需要做的是给UIImageView一些观点。默认情况下,图层转换没有透视图,因此您还必须设置:transform.m34 = 1.0 / -2000;

同时更改视图的anchorpoint,使其沿视图的上边缘旋转。对你来说它变成了(0,0.5)

enter image description here

透视图给出了平行四边形看起来好像视图具有深度(它也称为2.5D,因为它不是纯3D动画,它是伪3D)。设置锚点,使其沿着该边缘旋转,最后给它一个角度。即旋转多少?

// Rotate by 30 degrees
CGAffineTransform rotationTransform = CGAffineTransformIdentity;
rotationTransform = CGAffineTransformRotate(rotationTransform, DegreesToRadians(30));
swingView.transform = rotationTransform;

所有这一切都会给你你想要的......