iOS: вращение с помощью CGContextRotate
Я пытаюсь повернуть изображение, которое я хочу нарисовать в файле изображения (к контексту. Все работает хорошо, кроме случаев, когда я поворачиваю изображение.
В основном у меня есть изображение; Я хочу, чтобы масштабировать и изменить размер изображения, а затем обрезать его в прямоугольник и, наконец, нарисовать его в UICurrentContext;
//create a new graphic context
UIGraphicsBeginImageContext(CGSizeMake(500, 500));
CGContextRef graphicContext = UIGraphicsGetCurrentContext();
CGContextDrawImage(graphicContext, CGRectMake(0, 0, rect.size.width, rect.size.height), image.CGImage);
CGContextRotateCTM(graphicContext, 45 * M_PI/180.0);
UIImage* editedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//draw it to the current context
[editedImage drawAtPoint:CGPointMake(0,0)];
Дело в том, что когда я поворачиваю изображение, я не понимаю, каким будет новый размер изображения. Рядом с этим изображение в отредактированном изображении не поворачивается..
1 ответ
Вы должны повернуть контекст, прежде чем рисовать. Я знаю, что это кажется глупым, но если использовать аналогию с листком бумаги... это лист бумаги, который не может двигаться. Вместо этого вы должны двигаться вокруг этого и затем рисовать.
Таким образом, ваш размер никогда не изменится, потому что что-то слишком большое просто обрежется.
РЕДАКТИРОВАТЬ Кроме того, эта функция принимает радианы, а не градусы, поэтому вам не нужно конвертировать, как вы делаете. Если вы хотите 45 градусов, это будет просто PI / 4 (который хранится как константа M_PI_4
в математике)