これは次のようになります: http://screencast.com/t/4cd1yQJReXt
小さな船の画像は、あなたが描いた道をたどるはずです。そしてそれはうまくいきます - それは道をたどりますが、間違った場所から始まります。アニメーションの何が問題なのかわからず、コードを何度も確認しました。アプリケーションの XAML は非常に単純で、すべての要素が Canvas Name="Canvas1" Background="Black" 内に含まれています。
このキャンバスは Window の子要素です
以下は、アニメーション化を行うコードです。私が供給している行が正しいことは事実です。参照ポイントが何らかの形で台無しになっているだけです。Canvas1 であるはずですが、そうではありません。
NameScope.SetNameScope(this, new NameScope());
MatrixTransform buttonMatrixTransform = new MatrixTransform();
ship1.RenderTransform = buttonMatrixTransform;
this.RegisterName("ButtonMatrixTransform", buttonMatrixTransform);
PathGeometry animationPath = new PathGeometry();
PathFigure pFigure = new PathFigure();
pFigure.StartPoint = new Point(pathnodes.ElementAt<Line>(0).X1, pathnodes.ElementAt<Line>(0).Y1);
PolyLineSegment ls = new PolyLineSegment();
foreach (Line l in pathnodes)
{
ls.Points.Add(new Point(l.X1, l.Y1));
ls.Points.Add(new Point(l.X2, l.Y2));
}
pFigure.Segments.Add(ls);
animationPath.Figures.Add(pFigure);
animationPath.Freeze();
MatrixAnimationUsingPath matrixAnimation =
new MatrixAnimationUsingPath();
matrixAnimation.IsOffsetCumulative = false;
matrixAnimation.PathGeometry = animationPath;
matrixAnimation.Duration = TimeSpan.FromSeconds(5);
matrixAnimation.DoesRotateWithTangent = true;
Storyboard.SetTargetName(matrixAnimation, "ButtonMatrixTransform");
Storyboard.SetTargetProperty(matrixAnimation,
new PropertyPath(MatrixTransform.MatrixProperty));
Storyboard pathAnimationStoryboard = new Storyboard();
pathAnimationStoryboard.Children.Add(matrixAnimation);
pathAnimationStoryboard.Begin(this);
ありがとうございました!