3

これは次のようになります: 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);

ありがとうございました!

4

1 に答える 1

0

私はあなたのビデオを見ることができません:O(しかし、それはRenderTransformOriginが設定されていないことと関係があるのでしょうか?通常、私が変換を行うとき、原点がオブジェクトの中心になるようにRTOを0.5、0.5に設定します.

于 2013-03-28T15:19:27.507 に答える