UIView中的BezierPath旋转

时间:2012-05-10 12:17:17

标签: iphone ios uigesturerecognizer bezier uibezierpath

我正在绘制BezierPath on Touch事件。现在我必须使用Gesture方法在同一位置旋转Bezier Path。但问题是,轮换后它的位置会发生变化。它看起来像下面的图像..我该如何解决这个问题?

BezierPath Drawing

上图是原始图像。 与我分享你的想法.. 提前致谢

1 个答案:

答案 0 :(得分: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;
}