UserControl
をCubic 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でMatrixAnimationUsingPath
とDoubleAnimationUsingPath
を使用していましたが、これらのクラスは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
の値が何であるべきか理解していません。
@JustinXLがあなたに役立つかもしれません –
'KeySpline'の値は、あなたのベジェコントロールポイントです。すなわちKeySpline = "c1.x、c1.y、c2.x、c2.y"となる。あなたが作成したものは、次の曲線です:http://cubic-bezier.com/#0,4.0,.4(初期は非常に速い速度から一定速度まで減速します)。値500が初期値で、500から500にアニメートしようとしている場合を除き、y方向がうまくいかない理由はわかりません。 – user3047190