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

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


posted @   qiutian-hao  阅读(147)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示