我知道在绘图时我必须翻译坐标系。事情是,当我使用:
CGContextTranslateCTM(_context, 0.0, _size.height);
CGContextScaleCTM(_context, 1.0, -1.0);
我的图像的矩形被翻转,图像被“非翻转”,如果我不使用上面的图像被翻转,并且矩形是非翻转的。
这是我的代码:
CGRectMake(60, 100, image.size.width, image.size.height);
CGContextSaveGState(_context);
UIGraphicsBeginImageContext(image.size);
CGContextClearRect(_context, placeholderRect);
CGContextDrawImage(_context, placeholderRect, image.CGImage);
UIGraphicsEndImageContext();
CGContextRestoreGState(_context);
如果图像被翻转,我如何保持我的矩形(非翻转)?
由于
答案 0 :(得分:3)
而不是使用CGContextDrawImage
使用[image drawAtPoint:CGPointMake(0,0)];
答案 1 :(得分:1)
诀窍可能在于这个UIImage方法
+ (UIImage *)imageWithCGImage:(CGImageRef)imageRef scale:(CGFloat)scale orientation:(UIImageOrientation)orientation
取向是以下之一:)
typedef enum {
UIImageOrientationUp,
UIImageOrientationDown, // 180 deg rotation
UIImageOrientationLeft, // 90 deg CCW
UIImageOrientationRight, // 90 deg CW
UIImageOrientationUpMirrored, // as above but image mirrored along other axis. horizontal flip
UIImageOrientationDownMirrored, // horizontal flip
UIImageOrientationLeftMirrored, // vertical flip
UIImageOrientationRightMirrored, // vertical flip
} UIImageOrientation;
修改:更新
我刚刚在UIView子类中完成了这个简单的代码示例,它覆盖了drawrect并且它工作得很好。它不使用UIImage方法,但工作原理相同。
UIImage *image = [UIImage imageNamed:@"image.png"];
CGContextRef _context = UIGraphicsGetCurrentContext();
CGContextSaveGState(_context);
CGContextDrawImage(_context, CGRectMake(100, 20, image.size.width, image.size.height), image.CGImage);
CGContextScaleCTM(_context, -1.0f, 1.0f);
CGContextDrawImage(_context, CGRectMake(-300, 20, image.size.width, image.size.height), image.CGImage);
CGContextRestoreGState(_context);