首页 > 编程语言 >【C#】WPF 使用Storyboard故事板做动画效果

【C#】WPF 使用Storyboard故事板做动画效果

时间:2024-06-20 09:45:57浏览次数:13  
标签:动画 Storyboard 故事 效果 C# WPF

  <Style
      x:Key="ButtonAnimationBlueStyle"
      BasedOn="{x:Null}"
      TargetType="{x:Type Button}">
      <Setter Property="Template">
          <Setter.Value>
              <ControlTemplate TargetType="{x:Type Button}">
                  <ControlTemplate.Resources>
                      <Storyboard x:Key="Storyboard1">
                          <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
                              <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1.25" />
                          </DoubleAnimationUsingKeyFrames>
                          <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
                              <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1.25" />
                          </DoubleAnimationUsingKeyFrames>
                      </Storyboard>
                      <Storyboard x:Key="Storyboard2">
                          <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)">
                              <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1" />
                          </DoubleAnimationUsingKeyFrames>
                          <DoubleAnimationUsingKeyFrames Storyboard.TargetName="grid" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
                              <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="1" />
                          </DoubleAnimationUsingKeyFrames>
                      </Storyboard>
                  </ControlTemplate.Resources>
                  <Grid x:Name="grid" RenderTransformOrigin="0.5,0.5">
                      <Grid.RenderTransform>
                          <TransformGroup>
                              <ScaleTransform />
                              <SkewTransform />
                              <RotateTransform />
                              <TranslateTransform />
                          </TransformGroup>
                      </Grid.RenderTransform>
                      <Label
                          Name="lbl"
                          Width="{TemplateBinding Width}"
                          Height="{TemplateBinding Height}"
                          HorizontalContentAlignment="{TemplateBinding HorizontalAlignment}"
                          VerticalContentAlignment="{TemplateBinding VerticalAlignment}"
                          Background="#31b0d5"
                          Content="{TemplateBinding Content}" />
                  </Grid>
                  <ControlTemplate.Triggers>
                      <Trigger Property="IsDefaulted" Value="True" />
                      <Trigger Property="IsMouseOver" Value="True">
                          <Setter TargetName="lbl" Property="Background" Value="#31b0d5" />
                          <Trigger.ExitActions>
                              <BeginStoryboard x:Name="Storyboard_Copy1_BeginStoryboard" Storyboard="{StaticResource Storyboard2}" />
                          </Trigger.ExitActions>
                          <Trigger.EnterActions>
                              <BeginStoryboard Storyboard="{StaticResource Storyboard1}" />
                          </Trigger.EnterActions>
                      </Trigger>
                      <Trigger Property="IsPressed" Value="True">
                          <Setter TargetName="lbl" Property="Background" Value="#449d44" />
                      </Trigger>
                      <Trigger Property="IsFocused" Value="True">
                          <Setter TargetName="lbl" Property="Background" Value="#449d44" />
                      </Trigger>
                      <Trigger Property="IsEnabled" Value="False" />
                  </ControlTemplate.Triggers>
              </ControlTemplate>
          </Setter.Value>
      </Setter>
      <Setter Property="VerticalAlignment" Value="Center" />
      <Setter Property="HorizontalAlignment" Value="Center" />
  </Style>


标签:动画,Storyboard,故事,效果,C#,WPF
From: https://www.cnblogs.com/qiutian-hao/p/18258066

相关文章

  • linux - curl
    curl(commandlineuniformresourcelocator),URL命令行,用于发送http请求场景:项目运维过程中,如果没有postman工具,会用到这些命令;docker容器内,如果没有开放端口,只能进容器内用curl进行测试了。#不带有任何参数时,curl默认发出GET请求。curlhttps://www.baidu.com......
  • HieRec论文阅读笔记
    HieRec:HierarchicalUserInterestModelingforPersonalizedNewsRecommendation论文阅读笔记Abstract现存的问题:​ 用户兴趣建模对于个性化新闻推荐至关重要。现有的新闻推荐方法通常从每个用户以前的行为中学习一个单一的用户嵌入,以代表他们的整体兴趣。然而,用户兴趣通......
  • linux - cat
    系统运维中,查看日志时,最经常使用的就是grep、cat和tail三个命令。cat(英文全拼:concatenate)命令,用于连接文件并打印到标准输出设备上。命令语法:cat[选项][文件]参数选项:-n:显示行号;-b:显示非空行号;-s:合并空白行;-E:在每行结尾添加$符号;-T:将制表符显示为^I,tab键......
  • Docker部署安装应用大集合(Tomcat、Nginx、Mysql、Redis、MQ、Nacos、Zookeeper、Port
    Docker部署安装应用大集合(Tomcat、Nginx、Mysql、Redis、MQ、Nacos、Zookeeper、Portainer、MongoDB......) 精选 原创CodeDevMaster2022-11-1608:42:24博主文章分类:Docker©著作权文章标签dockermysqlNginxNacosMQ文章分类Docker云计算yyds干货盘点 Docker部署......
  • application.yml与bootstrap.yml的区别
    原文链接:application.yml与bootstrap.yml的区别–每天进步一点点(longkui.site)SpringBoot默认支持properties(.properties)和YAML(.yml.yaml)两种格式的配置文件,yml和properties文件都属于配置文件,功能一样。SpringCloud构建于SpringBoot之上,在SpringBoot......
  • MyBatis批量插入不用foreach
    原文链接:MyBatis批量插入不用foreach–每天进步一点点(longkui.site)近日,项目中有一个耗时较长的Job存在CPU占用过高的问题,经排查发现,主要时间消耗在往MyBatis中批量插入数据。mapperconfiguration是用foreach循环做的,差不多是这样。(由于项目保密,以下代码均为自己手写的demo......
  • ERROR TypeError: this.nzData.slice is not a function
    原文链接:ERRORTypeError:this.nzData.sliceisnotafunction–每天进步一点点(longkui.site) 使用angular+ngzorro的nz-table渲染表格的时候报错:ERRORTypeError:this.nzData.sliceisnotafunction我的html部分代码如下:<nz-table#basicTable2[nzData]="lis......
  • 2024年BCSP-X初赛真题解析(小高组)
    学习C++从娃娃抓起!学习下帝都的对标CSP的BCSP考试,记录下CSP-J备考学习的每一个瞬间。单选题第1题计算机在工作过程中突然停电,()中的信息不会丢失。A.显存B.寄存器C.RAMD.ROM【答案】:D第2题中缀表达式a*(b+c)-d的后缀形式是()。A.abcd*±B.abc+*d-C.abc*+d-D.-+......
  • Tomcat8.5+ 日志最大保留天数
    网上很多说的是FileHandler.maxDays但试了无效,后使用AsyncFileHandler.maxDays可行,顾记录下供同学们少走弯路。本人从tomcat-8.5.100下载修改:tomcat8.5\conf\logging.propertiesAsyncFileHandler.maxDays属性设置天数天数从0开始的,因此此处保留最近为8天的日志1c......
  • STM32学习笔记(十)--I2C、IIC总线协议详解
    概述:InterIntegratedCircuit,一组多从多组多从有应答是一种同步(具有时钟线需要同步时钟SCL)、串行(一位一位的往一个方向发送)、半双工(发送接收存在一种)通信总线。(1)硬件电路所有I2C设备的SCL连接在一起,SDA连在一起            设备的SCL和SDA均要......