1
我正在繪製一個BezierPath on Touch事件。現在我必須使用手勢方法在相同的位置上旋轉Bezier路徑。但問題是,輪換後它的位置變了。它看起來像下面的圖片..我該如何解決這個問題?BezierPath旋轉UIView
在上部圖像是原始圖像。 跟我分享一下你的想法.. 預先感謝
我正在繪製一個BezierPath on Touch事件。現在我必須使用手勢方法在相同的位置上旋轉Bezier路徑。但問題是,輪換後它的位置變了。它看起來像下面的圖片..我該如何解決這個問題?BezierPath旋轉UIView
在上部圖像是原始圖像。 跟我分享一下你的想法.. 預先感謝
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;
}