2009-11-18 4 views
0

У меня есть следующий кодUIImage вращения Смещение

- (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]; 
} 

Вопрос заключается в том, что вращение происходит вокруг левого нижнего угла, когда он был рассчитан вокруг центра. Есть ли способ изменить это?

ответ

1

Ваш код переводит матрицу перед ее вращением. Попробуйте перевернуть вызовы на CGContextConcatCTM и CGContextTranslateCTM, чтобы вы сначала повернули. Или, может быть, вы ищете что-то еще?

+0

Я изменил код, см. Выше, все еще не работает – woody993

+0

Вы все еще переводите его перед вращением. Вам нужно вызвать CGContextRotateCTM, затем CGContextTranslateCTM. – fbrereto

+0

Теперь он просто делает это с верхним левым углом – woody993