2009-11-18 16 views
0

Je le code suivantUIImage Rotation Décalage

- (void)ComputeRotationWithRadians:(CGFloat)rad { 
    CGFloat width = exportImage.size.width; 
    CGFloat height = exportImage.size.height; 
    UIGraphicsBeginImageContext(CGSizeMake(width, height)); 
    CGContextRef ctxt = UIGraphicsGetCurrentContext(); 
    CGContextScaleCTM(ctxt, 1.0, -1.0); 
    CGContextTranslateCTM(ctxt, 0.0, -exportImage.size.height); 
    CGContextRotateCTM(ctxt, rad); 
    CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), exportImage.CGImage); 
    exportImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    [imageView setImage:exportImage]; 
} 

Le problème est que la rotation se produit autour du coin en bas à gauche, quand il a été calculé autour du centre. Est-ce qu'il y a une façon de changer ceci-ci?

Répondre

1

Votre code traduit la matrice avant de la faire pivoter. Essayez de basculer les appels à CGContextConcatCTM et CGContextTranslateCTM de sorte que vous faites d'abord pivoter. Ou peut-être cherchez-vous autre chose?

+0

J'ai changé le code, voir ci-dessus, ne fonctionne toujours pas – woody993

+0

Vous êtes toujours en train de traduire avant de tourner. Vous devez appeler CGContextRotateCTM, puis CGContextTranslateCTM. – fbrereto

+0

Maintenant, il le fait juste avec le coin supérieur gauche – woody993