C# 需要在wpf的变换组中应用动画的帮助吗

C# 需要在wpf的变换组中应用动画的帮助吗,c#,wpf,xaml,storyboard,C#,Wpf,Xaml,Storyboard,我有一块xaml,它应用了缩放变换和旋转变换 <Image.RenderTransform> <TransformGroup> <RotateTransform Angle="0" x:Name="RotateTransform"/> <TranslateTransform X="0" Y="0"/> <Sc

我有一块xaml,它应用了缩放变换和旋转变换

        <Image.RenderTransform>
            <TransformGroup>
                <RotateTransform Angle="0" x:Name="RotateTransform"/>
                <TranslateTransform X="0" Y="0"/>
                <ScaleTransform ScaleX="2" ScaleY="2"/>
            </TransformGroup>
        </Image.RenderTransform>

我还有一个故事板,需要像这样访问RotateTransform:

        <Storyboard x:Key="Storyboard"
                Storyboard.TargetProperty="(RenderTransform).(RotateTransform.Angle)"
                Storyboard.TargetName="RotateTransform">
        <DoubleAnimation From="0" To="360" RepeatBehavior="Forever" SpeedRatio="0.25" />
    </Storyboard>

然而,我不能让图像旋转,但它确实放大了。有人有解决问题的建议吗

编辑:我确实发现我可以使用

    <Storyboard x:Key="Storyboard"
                Storyboard.TargetProperty="(Image.RenderTransform).Children[0].Angle"
                Storyboard.TargetName="ContentImage">
        <DoubleAnimation From="0" To="360" RepeatBehavior="Forever" SpeedRatio="0.25" />
    </Storyboard>


并按数组位置调用动画,但为什么不能按x:Name自动调用变换属性的角度属性呢?

旋转变换没有
RenderTransform
属性,因此无法设置
RenderTransform.angle
的动画

动画必须直接以
角度
属性为目标。此外,您通常会将
TargetName
TargetProperty
属性应用于DoubleAnimation,而不是故事板。您还可以设置动画的
持续时间
,而不是将
速度比
应用于默认的1秒持续时间

<Storyboard>
    <DoubleAnimation
        Storyboard.TargetName="RotateTransform"
        Storyboard.TargetProperty="Angle"
        From="0" To="360" RepeatBehavior="Forever" Duration="0:0:4"/>
</Storyboard>

RenderTransform和RotateTransform是关联的属性,需要在它们周围加括号。这是正确的语法

<Storyboard x:Key="Storyboard"
            TargetProperty="(RenderTransform).Children[0].(RotateTransform.Angle)"
            TargetName="ContentImage">
    <DoubleAnimation From="0" To="360" RepeatBehavior="Forever" SpeedRatio="0.25" />
</Storyboard>

正如你在编辑中指出的,你也可以这样写

<Storyboard x:Key="Storyboard"
            TargetProperty="(RenderTransform).Children[0].Angle"
            TargetName="ContentImage">
    <DoubleAnimation From="0" To="360" RepeatBehavior="Forever" SpeedRatio="0.25" />
</Storyboard>

我试图了解速比是如何工作的,但它究竟是如何工作的?它是否基于常规默认速度、clcok速度和帧速率的速度?我无法从以下方面计算它:相对于时间线父级的速度,或者,如果这是根时间线,则是默认时间线速度,此时间线的时间进度速率。