2012-05-10 148 views
1

我正在繪製一個BezierPath on Touch事件。現在我必須使用手勢方法在相同的位置上旋轉Bezier路徑。但問題是,輪換後它的位置變了。它看起來像下面的圖片..我該如何解決這個問題?BezierPath旋轉UIView

BezierPath Drawing

在上部圖像是原始圖像。 跟我分享一下你的想法.. 預先感謝

回答

1

入住這Apple documentation.

applyTransform: 使用指定的仿射變換矩陣來變換所有點的路徑。

- (void)applyTransform:(CGAffineTransform)transform 

我還沒有試過這個。但這裏是如何從鏈接rotating-nsbezierpath-objects旋轉NSBezierPath。嘗試在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; 
}