Имате нужда от примери за това как да използвате 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