【问题标题】:Distorting UIImage into Parallelogram将 UIImage 扭曲为平行四边形
【发布时间】:2013-02-13 01:16:20
【问题描述】:

我有一个由函数产生的 UIImage。如下所示。

image1.image = [self reflectedImage:img];

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

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

感谢您的帮助。

【问题讨论】:

    标签: ios objective-c uiimage catransform3d 2.5d


    【解决方案1】:

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

    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

    【讨论】:

      【解决方案2】:

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

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

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

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

      所有这些都会给你你想要的......

      【讨论】:

        猜你喜欢
        • 2012-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-10
        • 2012-06-06
        • 2021-10-10
        • 1970-01-01
        相关资源
        最近更新 更多