【发布时间】:2011-09-21 16:02:45
【问题描述】:
我正在尝试创建一种沿 X 轴、Y 轴或两者翻转 UIImage 的方法。我一直在接近,但我的变换知识还不够好,无法一直到达那里。这是我到目前为止的代码:
- (UIImage *)flippedImageByAxis:(MVImageFlip)axis{
UIGraphicsBeginImageContext(self.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGAffineTransform verticalFlip = CGAffineTransformMake(1, 0, 0, -1, 0, self.size.height);
CGAffineTransform horizFlip = CGAffineTransformMake(-1.0, 0.0, 0.0, 1.0, self.size.width, 0.0);
if(axis == MVImageFlipXAxis || axis == MVImageFlipXAxisAndYAxis)
CGContextConcatCTM(context, horizFlip);
if(axis == MVImageFlipYAxis || axis == MVImageFlipXAxisAndYAxis)
CGContextConcatCTM(context, verticalFlip);
CGContextDrawImage(context, CGRectMake(0.0, 0.0, self.size.width, self.size.height), [self CGImage]);
UIImage *flipedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return flipedImage;
}
这会翻转图像但不正确。 Y 翻转的图像根本没有翻转,X 翻转的图像看起来像 XY 图像应该看起来的样子,而 XY 图像看起来像 Y 图像应该看起来的样子。组合变换并让它们正常工作让我头疼。
MVImageFlip 枚举只是您在代码中看到的三个。没什么特别的。
【问题讨论】:
标签: iphone cocoa-touch core-graphics