Нужны примеры того, как использовать CGAffineTransform в CGPaths

Я не понимаю, как применить параметр CGAffineTransform, который появляется практически в каждом методе CGPath, например:

void CGPathAddRect (
   CGMutablePathRef path,
   const CGAffineTransform *m,
   CGRect rect
);

Допустим, я хочу повернуть прямой путь, как мне написать эту функцию? Где взять матрицу преобразования?


person anna    schedule 05.11.2010    source источник


Ответы (1)


Вы используете CGAffineTransformMakeRotation для создания CGAffineTransform, который вращает прямоугольник вокруг точки (0, 0).

 CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI / 4);  // π/4 = 45°
 CGPathAddRect(path, &rotation, CGRectMake(0, 0, 80, 40));

Если вам нужно, чтобы он вращался вокруг любых других точек (x, y), вам нужно составить 2 перевода для перемещения (x, y) в (0, 0) и обратно.

person kennytm    schedule 05.11.2010
comment
Спасибо за ваш ответ. Амперсанд был действительно недостающей частью, потому что я продолжал получать ошибки без него. - person anna; 06.11.2010