2012-05-10 2 views
1

Я рисую событие BezierPath on Touch. Теперь мне нужно повернуть этот путь Безье в том же месте, используя метод жеста. Но проблема в том, что после поворота его положение становится изменением. Его вид выглядит следующим образом. Как я могу это исправить?Вращение BezierPath в UIView

BezierPath Drawing

Верхний изображение исходное изображение. Поделитесь своими идеями со мной .. Заранее спасибо

ответ

1

Проверить это в Apple documentation.

applyTransform: Превращает все точки на пути, используя указанный аффинное преобразование матрицы.

- (void)applyTransform:(CGAffineTransform)transform 

Я еще не пробовал. Но вот как повернуть NSBezierPath со ссылкой rotating-nsbezierpath-objects. Попробуйте использовать аналогичный подход на UIBezierPath.

- (NSBezierPath*)rotatedPath:(CGFloat)angle aboutPoint:(NSPoint)cp 
{ 
// return a rotated copy of the receiver. The origin is taken as point <cp> relative to the original path. 
// angle is a value in radians 

if(angle == 0.0) 
    return self; 
else 
{ 
    NSBezierPath* copy = [self copy]; 

    NSAffineTransform* xfm = RotationTransform(angle, cp); 
    [copy transformUsingAffineTransform:xfm]; 

    return [copy autorelease]; 
} 
} 

, который использует:

NSAffineTransform *RotationTransform(const CGFloat angle, const NSPoint cp) 
{ 
// return a transform that will cause a rotation about the point given at the angle given 

NSAffineTransform* xfm = [NSAffineTransform transform]; 
[xfm translateXBy:cp.x yBy:cp.y]; 
[xfm rotateByRadians:angle]; 
[xfm translateXBy:-cp.x yBy:-cp.y]; 

return xfm; 
} 
Смежные вопросы