首页 > 其他分享 >WPF —— 平移变换动画实例

WPF —— 平移变换动画实例

时间:2024-04-08 19:30:21浏览次数:37  
标签:动画 Storyboard 使用 DoubleAnimation sb WPF 平移变换 属性

创建动画面临第一个问题选择正确的属性,选择属性的准则有以下几个方式进行选择

 1 如果希望动画显示和隐藏元素的时候,不要使用visibility,应使用opacity进行动画

 2 如果改变元素的位置的动画,尽量使用Canvas,使用Canvas.left以及canvas.top属性进行调整
 但是也可以使用thicknessAnimation 改Margin和Padding ,也可以使用平移变换动画实现
        
 3 动画常用的效果是变换效果:Translate(平移变换)、Rotate(旋转)、scale(缩放变换),
 比直接修改元素大小或者位置方法要快。

4 修改元素的外观的时候,建议修改画笔的属性,或者通过colorAnimation实现颜色的变化

简单的动画资源封装
<!--简单的动画资源封装-->
<Button Width="100"
        Height="100"
        VerticalAlignment="Top"
        HorizontalAlignment="Left"
        Name="b1">
    <!--添加变换属性-->
    <Button.RenderTransform>
        <!--添加变换类型 平移变化
        X x轴平移 
        Y y轴的平移-->
        <TranslateTransform X="0"
                            Y="0"
                            x:Name="t1"></TranslateTransform>
      
    </Button.RenderTransform>

    <!--添加触发类型-->
    <Button.Triggers>
        <!--第一个触发类型 事件触发-->
        <EventTrigger RoutedEvent="Loaded">
            <BeginStoryboard Storyboard="{StaticResource s1}">
                <!--把之前在此处写的storyboard进行封装添加到BeginStoryboard的属性上-->
            </BeginStoryboard>
        </EventTrigger>
    </Button.Triggers>
</Button>
WPF动画中常见的动画就平移、缩放以及旋转,一般会用到故事板(Storyboard)和浮点动画( DoubleAnimation),下面我们先对这两个进行具体的介绍,因为本次我们主要利用故事板来添加动画:

一.Storyboard:俗称故事板,在VS中意思是,一个容器的时间线,该时间线为子动画提供对象和属性确定信息

二.DoubleAnimation:浮点动画,在VS中的意思是,对插入的两个目标值之间的double属性值进行动画处理:

封装动画 在window.resources中进行添加
       在xaml文件如何使用   <BeginStoryboard Storyboard="{StaticResource s1}"></BeginStoryboard>
       在cs当中如何使用   Storyboard sb = (Storyboard)this.FindResource("s3");sb.Begin(b1);

标签页

<Window.Resources>
    <Storyboard x:Key="s1">
        <DoubleAnimation Storyboard.TargetProperty="X"
                         Storyboard.TargetName="t1"
                         To="680"
                         Duration="0:0:8"
                         Completed="DoubleAnimation_Completed">

        </DoubleAnimation>
        <!--如果在下面直接写第二个动画,俩个动画同时执行-->
        <!--<DoubleAnimation Storyboard.TargetProperty="Y"
                         Storyboard.TargetName="t1"
                         To="330"
                         Duration="0:0:8">

        </DoubleAnimation>-->
    </Storyboard>
    <!--第二个动画 是在第一个动画结束之后再去执行第二个动画,必须把第二个动画添加到第一个动画结束的回调中
    -->
    <Storyboard x:Key="s2">
        <DoubleAnimation Storyboard.TargetProperty="Y"
                         Storyboard.TargetName="t1"
                         To="330"
                         Duration="0:0:8"
                         Completed="DoubleAnimation_Completed_1">
            
        </DoubleAnimation>
    </Storyboard>
    
    <!--第三个动画资源-->
    <Storyboard x:Key="s3">
        <DoubleAnimation Storyboard.TargetProperty="X"
                         Storyboard.TargetName="t1"
                         To="0"
                         Duration="0:0:8">

        </DoubleAnimation>
    </Storyboard>
</Window.Resources>

CS 

private void DoubleAnimation_Completed(object sender, EventArgs e)
{
    //开启第二动画版里面的动画 使用静态资源s2
    // xaml文件使用:{StaticResource s1}
    // 后台使用资源 this.FindResource("s2") 
    Storyboard sb = (Storyboard)this.FindResource("s2");
    sb.Begin(b1);//开启动画,参数是要做动画的元素,注意是按钮的name属性
}

private void DoubleAnimation_Completed_1(object sender, EventArgs e)
{
    Storyboard sb = (Storyboard)this.FindResource("s3");
    sb.Begin(b1);
}

标签:动画,Storyboard,使用,DoubleAnimation,sb,WPF,平移变换,属性
From: https://blog.csdn.net/lu2023_8_6/article/details/137520488

相关文章

  • cesium 地图旋转 整个场景旋转 开场动画
    设置camera旋转能实现整个场景的旋转,多用于开场动画开始旋转functiononTickCallback(){viewer.scene.camera.rotate(Cesium.Cartesian3.UNIT_Z,-0.02);}viewer.clock.onTick.addEventListener(onTickCallback);停止旋转view......
  • WPF系列文章合集(低调奢华版)
    自上一个系列文章写完之后,最近的两三个月时间,一直在写WPF相关技术文章,断断续续地写了近二十几篇文章,为了方便大家阅读,现将本系列文章分类整理,汇总如下。 浅谈WPF系列文章本系列共17篇文章,目录如下: 浅谈WPF之UI布局浅谈WPF之样式与资源浅谈WPF之各种Template......
  • Manim教程之轻松制作数学动画
    【2024最新教程】Manim动画软件教程,像3blue1brown那样做动画【更新中】【2024最新教程】Manim动画软件教程,像3blue1brown那样做动画【更新中】_哔哩哔哩_bilibiliManim教程之轻松制作数学动画Manim教程之轻松制作数学动画_哔哩哔哩_bilibili我找到了3Blue1Brown做视......
  • 抢先看!界面控件DevExpress WPF 2024产品路线图预览(二)
    DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。本文将介绍2024年DevExpressWPF第一个主要更新(v2......
  • WPF GroupBox Expander ExpandDirection="Down" Expander.HeaderTemplate Expander.C
    //xaml<Windowx:Class="WpfApp43.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic......
  • WPF instantiate class instance as resource
    //xaml<Windowx:Class="WpfApp42.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mic......
  • WPF WebClient EAP async await
    <Windowx:Class="WpfApp40.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.......
  • 往 VisualStudio 工具箱中添加 WPF/WinForms 控件的几种方式
    在使用VisualStudio开发WPF或WinForms应用时,打开UI文件的设计界面,我们可以从工具箱的控件列表中直接拖拽控件到界面上。通过这种方式,可以清晰的展示控件库中所有可用的控件,并且非常方便的将其添加到界面中。那么我们可以通过哪些方式将WPF/WinForms控件库中的控件添加到VisualS......
  • WPF —— 后台实现fromto动画实例
    标签页<ButtonWidth="100"Height="40"Content="点击开始动画"Click="Button_Click"Name="b1"></Button><!--HorizontalAlignment="Left"-->&l......
  • 敌人——角色蓝图父类,子类以及动画蓝图创建
    目标资源处理(略)动画蓝图创建角色蓝图父类及子类的创建核心思想将角色蓝图分为父类和子类方便之后其它敌人的制作动画蓝图中的状态机也是模块化设计,可以根据不同的敌人调用不同的动画资源1.动画蓝图创建动画蓝图中转换为敌人父类蓝图,方便后续调用基础的动画图表编写......