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

时间:2015-05-16 22:32:19

标签: c# wpf xaml storyboard

我有一块xaml应用了缩放变换和rotatetransform。

        <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?

自动调用transform属性的angle属性。

2 个答案:

答案 0 :(得分:0)

RotateTransform没有RenderTransform属性,因此您无法为RenderTransform.Angle设置动画。

动画必须直接定位Angle属性。此外,您通常会将TargetNameTargetProperty属性应用于DoubleAnimation,而不是应用于Storyboard。您还可以设置动画的Duration,而不是在默认的一秒钟内应用SpeedRatio

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

答案 1 :(得分:0)

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>