2

Touch イベントで BezierPath を描画しています。ここで、Gesture Method を使用して、同じ場所でベジエ パスを回転させる必要があります。しかし、問題は、回転後にその位置が変わることです。次の画像のように見えます.どうすれば修正できますか?

ベジェパスの描画

上の画像が元画像です。あなたのアイデアを私と共有してください..事前に感謝します

4

1 に答える 1

3

これはApple のドキュメントで確認してください。

applyTransform: 指定されたアフィン変換行列を使用して、パス内のすべてのポイントを変換します。

- (void)applyTransform:(CGAffineTransform)transform

私はこれを試していません。しかし、ここではNSBezierPath、リンクrotating-nsbezierpath-objectsからaを回転させる方法を示します。で同様のアプローチを使用してみてください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;
}
于 2012-11-02T01:12:25.007 に答える