ios - 无法绘制旋转图像

标签 ios objective-c image rotation

我无法在另一张图片上绘制旋转后的图片。我尝试了几种方法来做到这一点,但没有成功。我的 backgroundImg 没问题,但我的 logoImageView 没有旋转。为什么?这是我的代码:

CGSize newSize = CGSizeMake(555, 685);
//UIGraphicsBeginImageContext(newSize);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[backgroundImg.image drawInRect:CGRectMake(0, 0, 555, 685)];

CGAffineTransform rotate;
rotate = CGAffineTransformMakeRotation((rotationSlider.value + 360) * M_PI / 180.0);
logoImageView.layer.anchorPoint = CGPointMake (0.5, 0.5);
logoImageView.transform = CGAffineTransformMakeScale (1, -1);
[logoImageView setTransform:rotate];

然后我尝试 1):

   [logoImageView.image drawAtPoint:CGPointMake(logoImageView.center.x, logoImageView.center.y)];

和 2):

[logoImageView.image drawInRect:CGRectMake(0, 0, logoImageView.bounds.size.width * 2.20, logoImageView.bounds.size.height * 2.20) blendMode:kCGBlendModeNormal alpha:1];

像这样完成绘图:

imageTwo = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

均无效 - 我的 logoImageView 未旋转。有什么问题?我希望我的 logoImageView.image 在组合图像中旋转。

最佳答案

您在这里所做的是设置 logoImageViewtransform 属性。此属性指定应用于 UIImageView 本身的转换。虽然这会使图像在显示 ImageView 时旋转,但不会更改底层图像。
因此,当您旋转 ImageView 并读取 ImageView 的 image 属性时,您仍然会得到与分配给它的完全相同的图像,因为变换应用于 View 而不是图像本身。

您要做的是通过旋转变换将图像绘制到 CGContext。要设置此转换,您必须使用 CGContextRotateCTM 函数。此函数设置“当前转换矩阵”,它指定在上下文中绘制时要应用的转换。我还使用 CGContextTranslateCTM 将图像移动到上下文的中心。

最终代码可能是这样的:

CGSize newSize = [flowersImage size];
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[flowersImage drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];

CGContextTranslateCTM(UIGraphicsGetCurrentContext(), newSize.width / 2.f, newSize.height / 2.f);
CGContextRotateCTM(UIGraphicsGetCurrentContext(), -M_PI/6.f);

[appleImage drawAtPoint:CGPointMake(0.f - [appleImage size].width / 2.f, 0.f - [appleImage size].height / 2.f)];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

关于ios - 无法绘制旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18765375/

相关文章:

ios - UIButton 在 CABasicAnimation 期间不显示选定状态

image - qml qt grabToImage 获取图像字节

css - 在不使用 javascript 的情况下,如何在保持图像纵横比的同时具有最大高度和宽度的灵活 css 图像大小调整?

ios - 'didSet' 数组中的某些元素 - Swift

ios - 从 nsdictionary 填充 uitableview

ios - 使用 removefromsuperview 方法时如何刷新 View ?

ios - 如何更改iOS模拟器中In-App priceLocale产品的本地化?

iphone - 通过 nib 添加到 UICollectionViewCell contentView

image - iTextSharp - 从数据表将图像添加到 PDF

objective-c - CoreFoundation 中 NSHomeDirectory() 的等价物是什么?