1

我已经为此苦苦挣扎了好几个小时。仿射变换似乎从来没有像我期望的那样做。

CGContextSaveGState (ctx);
float w = self.frame.size.width;
float h = self.frame.size.height;
CGContextRotateCTM (ctx, angle);
CGContextTranslateCTM (ctx, w/2, -h/2);
CGRect r = CGRectMake (0,0, w, h);
CGContextDrawImage (ctx, r, image.CGImage);
CGContextRestoreGState (ctx);

我有一个名为 image 的 UIImage,我有一个可通过 ctx 访问的 CGImage。我想将 UIImage 从其中心旋转一个角度,并将其绘制在 CGImage 的顶部。

如果我旋转然后平移,UIImage 会以一种糟糕的方式拉伸。如果我翻译然后旋转,同样的结果。

关于如何做到这一点的任何线索?谢谢你。

4

1 回答 1

2

此代码目前在 iOS6 中运行。

检查图像宽度是否大于其高度,如果是,则顺时针旋转图像;否则它将按默认行为加载。

- (void)viewDidLoad
{
[super viewDidLoad];
UIImage *image = myImage;

if( image.size.width > image.size.height ) {

    UIImage *image = myImage;
    image = [UIImage imageWithCGImage:image.CGImage scale:image.scale orientation:UIImageOrientationRight];

    [bgImage setImage:image];

} else {

    [bgImage setImage:image];

}

}
于 2012-12-12T09:15:32.380 回答