2009-07-17 6 views

Répondre

22

Vous devriez être en mesure de transformer le contexte en utilisant quelque chose de similaire à ce qui suit:

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); 

La traduction ne peut être nécessaire pour le dessin d'image, mais je besoin quand je voulais dessiner le texte inversé. Si c'est la seule chose que vous ferez dans le contexte, vous pourrez également vous débarrasser des appels pour sauvegarder et restaurer l'état du contexte.

+1

Je ne avais besoin CGContextTranslateCTM et CGContextScaleCTM. Juste appelé juste après UIGraphicsBeginImageContext. Truc cool! – Thanks

8

Brad solution comme une extension à 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() 
    } 
} 
Questions connexes