• Silverlight 动画示例


    1 从-90度到0度显示页面和反向隐藏页面

    <Storyboard x:Name="StoryboardShowAllTools">
                    <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="allToolsView" Storyboard.TargetProperty="(UIElement.Visibility)">
                        <DiscreteObjectKeyFrame KeyTime="00:00:00">
                            <DiscreteObjectKeyFrame.Value>
                                <Visibility>Visible</Visibility>
                            </DiscreteObjectKeyFrame.Value>
                        </DiscreteObjectKeyFrame>
                    </ObjectAnimationUsingKeyFrames>
                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="allToolsView" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.CenterOfRotationX)">
                        <EasingDoubleKeyFrame KeyTime="00:00:01" Value="0.5"/>
                    </DoubleAnimationUsingKeyFrames>
                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="allToolsView" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationX)">
                        <EasingDoubleKeyFrame KeyTime="00:00:00" Value="-90"/>
                        <EasingDoubleKeyFrame KeyTime="00:00:01" Value="0"/>
                    </DoubleAnimationUsingKeyFrames>
                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="allToolsView" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.CenterOfRotationY)">
                        <EasingDoubleKeyFrame KeyTime="00:00:01" Value="1"/>
                    </DoubleAnimationUsingKeyFrames>
                </Storyboard>
                <Storyboard x:Name="StoryboardHiddenAllTools">
                    <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="allToolsView" Storyboard.TargetProperty="(UIElement.Visibility)">
                        <DiscreteObjectKeyFrame KeyTime="00:00:01">
                            <DiscreteObjectKeyFrame.Value>
                                <Visibility>Collapsed</Visibility>
                            </DiscreteObjectKeyFrame.Value>
                        </DiscreteObjectKeyFrame>
                    </ObjectAnimationUsingKeyFrames>
                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="allToolsView" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.CenterOfRotationX)">
                        <EasingDoubleKeyFrame KeyTime="00:00:01" Value="0.5"/>
                    </DoubleAnimationUsingKeyFrames>
                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="allToolsView" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.RotationX)">
                        <EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
                        <EasingDoubleKeyFrame KeyTime="00:00:01" Value="-90"/>
                    </DoubleAnimationUsingKeyFrames>
                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="allToolsView" Storyboard.TargetProperty="(UIElement.Projection).(PlaneProjection.CenterOfRotationY)">
                        <EasingDoubleKeyFrame KeyTime="00:00:01" Value="1"/>
                    </DoubleAnimationUsingKeyFrames>
                </Storyboard>

    2 从中心点放大和缩小

    RenderTransformOrigin="0.5,0.5"

    <ed:Callout.RenderTransform>
                                <TransformGroup>
                                    <ScaleTransform ScaleX="0" ScaleY="0"/>
                                </TransformGroup>
    </ed:Callout.RenderTransform>

            private void StoryboardShowWindows(DependencyObject dependencyObject)
            {
                Storyboard storyboard = new Storyboard();

                ObjectAnimationUsingKeyFrames ObjectAnimation = new ObjectAnimationUsingKeyFrames();
                ObjectAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(10));
                Storyboard.SetTarget(ObjectAnimation, dependencyObject);
                DiscreteObjectKeyFrame dof = new DiscreteObjectKeyFrame();
                dof.KeyTime = TimeSpan.FromMilliseconds(10);
                dof.Value = System.Windows.Visibility.Visible;
                ObjectAnimation.KeyFrames.Add(dof);
                Storyboard.SetTargetProperty(ObjectAnimation,
                    new PropertyPath("(UIElement.Visibility)"));
                storyboard.Children.Add(ObjectAnimation);

                DoubleAnimation doubleAnimation = new DoubleAnimation();
                doubleAnimation.To = 1;
                doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(1000));
                Storyboard.SetTarget(doubleAnimation, dependencyObject);
                Storyboard.SetTargetProperty(doubleAnimation,
                    new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"));
                storyboard.Children.Add(doubleAnimation);

                doubleAnimation = new DoubleAnimation();
                doubleAnimation.To = 1;
                doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(1000));
                Storyboard.SetTarget(doubleAnimation, dependencyObject);
                Storyboard.SetTargetProperty(doubleAnimation,
                    new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"));
                storyboard.Children.Add(doubleAnimation);

                storyboard.Begin();
            }

            private void StoryboardHiddenWindows(DependencyObject dependencyObject)
            {
                Storyboard storyboard = new Storyboard();

                ObjectAnimationUsingKeyFrames ObjectAnimation = new ObjectAnimationUsingKeyFrames();
                ObjectAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(1000));
                Storyboard.SetTarget(ObjectAnimation, dependencyObject);
                DiscreteObjectKeyFrame dof = new DiscreteObjectKeyFrame();
                dof.KeyTime = TimeSpan.FromMilliseconds(1000);
                dof.Value = System.Windows.Visibility.Collapsed;
                ObjectAnimation.KeyFrames.Add(dof);
                Storyboard.SetTargetProperty(ObjectAnimation,
                    new PropertyPath("(UIElement.Visibility)"));
                storyboard.Children.Add(ObjectAnimation);

                DoubleAnimation doubleAnimation = new DoubleAnimation();
                doubleAnimation.To = 0;
                doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(1000));
                Storyboard.SetTarget(doubleAnimation, dependencyObject);
                Storyboard.SetTargetProperty(doubleAnimation,
                    new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"));
                storyboard.Children.Add(doubleAnimation);

                doubleAnimation = new DoubleAnimation();
                doubleAnimation.To = 0;
                doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(1000));
                Storyboard.SetTarget(doubleAnimation, dependencyObject);
                Storyboard.SetTargetProperty(doubleAnimation,
                    new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"));
                storyboard.Children.Add(doubleAnimation);

                storyboard.Begin();
            }

    3 动态改变宽度,到最大在消失,类似进度条

    <Storyboard x:Name="myStoryboard">
                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Width" Storyboard.TargetName="myRectangle">
                        <EasingDoubleKeyFrame Value="0" KeyTime="00:00:00">
                        </EasingDoubleKeyFrame>
                        <EasingDoubleKeyFrame Value="100" KeyTime="00:00:03">
                        </EasingDoubleKeyFrame>
                        <EasingDoubleKeyFrame Value="0" KeyTime="00:00:03">
                        </EasingDoubleKeyFrame>
                    </DoubleAnimationUsingKeyFrames>
                </Storyboard>

    4 以左上角旋转

    <Popup.RenderTransform>
                    <RotateTransform x:Name="theTransform" />
                </Popup.RenderTransform>

    <Storyboard x:Name="showpp">
                    <DoubleAnimation  Storyboard.TargetName="theTransform" Storyboard.TargetProperty="(RotateTransform.Angle)"  From="0" To="90" Duration="0:0:5" AutoReverse="True"/>
                </Storyboard>

    5 以上边缘为旋转轴,来回摆动

    <ctrl:ChildWindow x:Name="cw" RenderTransformOrigin="0.5,0.5">
                    <ctrl:ChildWindow.RenderTransform>
                        <TransformGroup>
                            <ScaleTransform ScaleX="1" ScaleY="1" x:Name="cwScaleTransform"/>
                        </TransformGroup>
                    </ctrl:ChildWindow.RenderTransform>
                    <ctrl:ChildWindow.Projection>
                        <PlaneProjection  x:Name="cwPlaneProjection" CenterOfRotationY="0"/>
                    </ctrl:ChildWindow.Projection>
                </ctrl:ChildWindow>

    <Storyboard x:Name="StoryboardShowTool">
                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="cwPlaneProjection" Storyboard.TargetProperty="CenterOfRotationX">
                        <EasingDoubleKeyFrame KeyTime="00:00:01" Value="0"/>
                    </DoubleAnimationUsingKeyFrames>
                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="cwPlaneProjection" Storyboard.TargetProperty="RotationX">
                        <EasingDoubleKeyFrame KeyTime="00:00:00" Value="45"/>
                        <EasingDoubleKeyFrame KeyTime="00:00:01" Value="-45"/>
                        <EasingDoubleKeyFrame KeyTime="00:00:02" Value="0"/>
                    </DoubleAnimationUsingKeyFrames>
                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="cwPlaneProjection" Storyboard.TargetProperty="CenterOfRotationY">
                        <EasingDoubleKeyFrame KeyTime="00:00:01" Value="0"/>
                    </DoubleAnimationUsingKeyFrames>
                </Storyboard>

    6 页面消失动画

    <Storyboard x:Name="StoryboardHiddenTool">
                    <DoubleAnimation Storyboard.TargetProperty="ScaleY" Storyboard.TargetName="cwScaleTransform" From="1" To="0.1" BeginTime="00:00:00">
                    </DoubleAnimation>
                    <DoubleAnimation Storyboard.TargetProperty="ScaleX" Storyboard.TargetName="cwScaleTransform" From="1" To="0.1" BeginTime="00:00:01">
                    </DoubleAnimation>
                    <DoubleAnimationUsingKeyFrames BeginTime="00:00:01" Storyboard.TargetName="cwPlaneProjection" Storyboard.TargetProperty="RotationX">
                        <EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
                        <EasingDoubleKeyFrame KeyTime="00:00:01" Value="-90"/>
                    </DoubleAnimationUsingKeyFrames>
                </Storyboard>

  • 相关阅读:
    高可用网站多点部署架构实战经验总结
    使用阿里云发送邮件完美解决 端口 25 465
    阿里云 SSL 证书 总结
    支付宝支付接入流程
    阿里云服务器ECS的环境部署和安装
    对接 第三方物流APP 手机版
    智付支付接入心得
    二次开发本地配置域名
    从1到n整数中1出现的次数:O(logn)算法
    MongoDB——增删改查
  • 原文地址:https://www.cnblogs.com/xh831213/p/1820554.html
Copyright © 2020-2023  润新知