2017-09-18 20 views
1

UserControlCubic Bezier Curveに沿ってアニメーション化しようとしています。 これは私がUserControlには、以下のことがしたいのパスです:UWPでキュービックベジェ曲線に沿ってUserControlをアニメーション化するには

<Path Stroke="Green" StrokeThickness="1" Data="M100,500 C275,200 825,200 1100,500" /> 

これは私が使用しようとしましたが、私は直線に沿ってアニメーション化する方法を唯一発見したコードです:

<Storyboard x:Name="MyAnimation">    
    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ObjectTranslateTransform" Storyboard.TargetProperty="X" Duration="0:0:5"> 
     <LinearDoubleKeyFrame Value="1100" KeyTime="0:0:5"/> 
    </DoubleAnimationUsingKeyFrames> 
    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ObjectTranslateTransform" Storyboard.TargetProperty="Y" Duration="0:0:5"> 
     <LinearDoubleKeyFrame Value="500" KeyTime="0:0:5"/> 
    </DoubleAnimationUsingKeyFrames> 
</Storyboard> 

私が見つけた唯一のことは、ベジエ曲線について語っているのは、SplineDoubleKeyFrameです。しかし、私はこれが私が探しているものに近くても動作することはできません。

これまでWPFでMatrixAnimationUsingPathDoubleAnimationUsingPathを使用していましたが、これらのクラスはUWPでは利用できません。 UWPのパスに沿ってUserObjectをアニメーション化するにはどうすればよいですか?

EDIT: これは私がSplineDoubleKeyFrameのために使用しているコードである:

<Storyboard x:Name="MyAnimation"> 
    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ObjectTranslateTransform" Storyboard.TargetProperty="X" Duration="0:0:5"> 
     <SplineDoubleKeyFrame Value="1100" KeyTime="0:0:5" KeySpline="0.25,0.0 0.75,0.0"/> 
    </DoubleAnimationUsingKeyFrames> 
    <DoubleAnimationUsingKeyFrames Storyboard.TargetName="ObjectTranslateTransform" Storyboard.TargetProperty="Y" Duration="0:0:5"> 
     <SplineDoubleKeyFrame Value="500" KeyTime="0:0:5" KeySpline="0.0,0.4 0.0,0.4"/> 
    </DoubleAnimationUsingKeyFrames> 
</Storyboard> 

これはしかしだけ速度を減少させるの水平ラインに移動しています。私はKeySplineの値が何であるべきか理解していません。

+0

@JustinXLがあなたに役立つかもしれません –

+0

'KeySpline'の値は、あなたのベジェコントロールポイントです。すなわちKeySpline = "c1.x、c1.y、c2.x、c2.y"となる。あなたが作成したものは、次の曲線です:http://cubic-bezier.com/#0,4.0,.4(初期は非常に速い速度から一定速度まで減速します)。値500が初期値で、500から500にアニメートしようとしている場合を除き、y方向がうまくいかない理由はわかりません。 – user3047190

答えて

1

あなたはそれについての質問で言及しましたが、ベジェ削減関数を自分で作成しない唯一の方法は、DoubleAnimationUsingKeyFramesを使ってSplineDoubleKeyFrameを使用しています。良い例がありますMSDNのドキュメントで

: - 初期値を設定するための時間= 0と値= xでとても基本的なリニアキーフレームhttps://docs.microsoft.com/en-us/windows/uwp/graphics/key-frame-and-easing-function-animations

あなたは、最初のキーフレームをお勧めします。

その後、あなたの終了時に、ベジエ制御点、あなたの最終値と時刻の値を持つSplineDoubleKeyFrame

あなたがしようとした結果と間違って何をしてきたコードを投稿することができますか?

+0

私はSplineDoubleKeyFrameのコードを追加しました。だから、あなたは私が望む結果を得るために、LinearDoubleKeyFrameとSplineDoubleKeyFrameの両方を組み合わせるべきだと言っていますか?私はこれを試し、私は何かを得るかどうかを確認します – FewWords

関連する問題