我正在嘗試沿Cubic Bezier Curve
動畫UserControl
。 這是路徑我想要的UserControl
是以下幾點:如何在UWP中沿着Cubic Bezier曲線製作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的動畫效果?
編輯: 這是我用於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'的值是你的Bezier控制點。即KeySpline =「c1.x,c1.y,c2.x,c2.y」。在上面創建的曲線如下:http://cubic-bezier.com/#0,4,0,.4(初始速度非常快,然後減速到恆定速度)。我不知道爲什麼你的y方向不工作,除非值500是初始值,因此試圖從500到500動畫。 – user3047190