Iphone 在上下文中绘制时如何翻转坐标?
我从UIImage创建一个上下文,然后用Iphone 在上下文中绘制时如何翻转坐标?,iphone,cocoa-touch,uikit,core-graphics,Iphone,Cocoa Touch,Uikit,Core Graphics,我从UIImage创建一个上下文,然后用 CGContextDrawImage(bitmapContext, CGRectMake(0, 0, originalImage.size.width, originalImage.size.height), oImageRef); 由于石英中的坐标系翻转,
CGContextDrawImage(bitmapContext,
CGRectMake(0, 0,
originalImage.size.width,
originalImage.size.height),
oImageRef);
由于石英中的坐标系翻转,图像出现颠倒。如何解决此问题?您应该能够使用类似于以下内容的内容转换上下文:
CGContextSaveGState(bitmapContext);
CGContextTranslateCTM(bitmapContext, 0.0f, originalImage.size.height);
CGContextScaleCTM(bitmapContext, 1.0f, -1.0f);
// Draw here
CGContextDrawImage(bitmapContext, CGRectMake(0, 0, originalImage.size.width, originalImage.size.height), oImageRef);
CGContextRestoreGState(bitmapContext);
图像绘制可能不需要翻译,但当我想要绘制反转文本时,我需要翻译。如果这是您在上下文中要做的唯一一件事,那么您也可以摆脱保存和恢复上下文状态的调用。Brad作为Swift 3中的扩展:
extension CGContext {
func drawFlipped(image: CGImage, rect: CGRect) {
saveGState()
translateBy(x: 0, y: rect.height)
scaleBy(x: 1, y: -1)
draw(image, in: rect)
restoreGState()
}
}
我只需要cgcontexttranslatecm和CGContextScaleCTM。刚刚在UIGraphicsBeginImageContext之后调用了它。很酷的东西!