【问题标题】:How do I animate an ellipse to go up and down如何为椭圆设置动画以上下移动
【发布时间】:2020-03-27 19:38:45
【问题描述】:

所以我试图让我的椭圆以波浪的方式上下移动。 问题是我只能让它向前和向下,我不知道我怎么让它像横着走一样S 像这样 visual representation of what I want

这就是我目前所得到的

<Canvas Name="Can1">
            <Ellipse Name="Rect1" Canvas.Left="10" Fill="LightSeaGreen"
                   Stroke="Bisque"
                   StrokeThickness="5"
                   Width="100" Height="100">
                <Ellipse.Triggers>
                    <EventTrigger RoutedEvent="Window.Loaded">
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation
                                Storyboard.TargetName="Rect1"
                                Storyboard.TargetProperty="(Canvas.Left)"
                                From="10" To="100"
                                Duration="0:0:2"/>

                                <DoubleAnimation
                                Storyboard.TargetName="Rect1"
                                Storyboard.TargetProperty="(Canvas.Top)"
                                From="10" To="100"
                                Duration="0:0:2"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                </Ellipse.Triggers>
            </Ellipse>
        </Canvas>

【问题讨论】:

    标签: c# .net wpf xaml storyboard


    【解决方案1】:

    为垂直动画使用适当的EasingFunction。同时设置AutoReverseRepeatBehavior

    <Ellipse x:Name="ellipse"
             Fill="LightSeaGreen"
             Stroke="Bisque"
             StrokeThickness="5"
             Width="100" Height="100">
        <Ellipse.Triggers>
            <EventTrigger RoutedEvent="Window.Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetName="ellipse"
                            Storyboard.TargetProperty="(Canvas.Left)"
                            From="0" To="1000"
                            Duration="0:0:10"/>
    
                        <DoubleAnimation
                            Storyboard.TargetName="ellipse"
                            Storyboard.TargetProperty="(Canvas.Top)"
                            From="0" To="100"
                            Duration="0:0:1"
                            AutoReverse="True"
                            RepeatBehavior="Forever">
                            <DoubleAnimation.EasingFunction>
                                <SineEase EasingMode="EaseInOut"/>
                            </DoubleAnimation.EasingFunction>
                        </DoubleAnimation>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Ellipse.Triggers>
    </Ellipse>
    

    对于更复杂的动作,创建一个PathGeometry 并将其与MatrixAnimationUsingPath 一起使用,以在元素的RenderTransform 属性中为MatrixTransformMatrix 属性设置动画。

    【讨论】:

    • 哇!棒极了!我想了解更多关于这方面的知识,有没有关于动画的好书或pdf?
    • 我可以推荐 Adam Nathan 的 WPF Unleashed。但是不确定它在动画中的应用程度(不记得了)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    相关资源
    最近更新 更多