WPF 后台代码做 TranslateTransform 的动画

本文介绍了如何在WPF后台代码中为TranslateTransform创建动画,详细讲解了Freezable对象的动画限制及解决方法,包括使用Storyboard、PropertyPath和BeginAnimation等方式,并提供了示例代码。
摘要由CSDN通过智能技术生成

本文告诉大家,在后台代码,对 TranslateTransform 做动画的方法

今天小伙伴问我一个问题,说为什么相同的代码,如果设置到按钮上,是可以让按钮的某个属性变更,但是如果设置给 TranslateTransform 的 X 或 Y 就不会有任何值变更

在 WPF 中,通过 官方文档 里面的描述,对于 Freezable 类型的对象,如 SolidColorBrush 和 RotateTransform 和 GradientStop 等类型,都是不支持直接的动画,也就是如以下代码是不能触发动画

假定有 XAML 界面如下,期望在点击按钮时,修改按钮的 TranslateTransform 做动画

  <Grid>
    <Button x:Name="Button" HorizontalAlignment="Center" VerticalAlignment="Center" Content="按钮" Click="Button_OnClick">
      <Button.RenderTransform>
        <TranslateTransform x:Name="ButtonTranslateTransform"></TranslateTransform>
      </Button.RenderTransform>
    </Button>
  </Grid>

如果直接对使用 Storyboard 的 SetTarget 方法给对象设置 DoubleAnimation 将会是无效的,也就是说如以下的代码做的 TranslateTransform 动画是无效的,没有反应的

        private void Button_OnClick(object sender, RoutedEventArgs e)
        {
            var storyboard = new Storyboard();

            var doubleAnimation = new DoubleAnimation();
            Storyboard.SetTarget(doubleAnimation, ButtonTr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值