【问题标题】:skew animation unable to animate倾斜动画无法动画
【发布时间】:2012-12-02 20:16:36
【问题描述】:

我在将我的倾斜动画转换为双动画类方面取得了进展。剩下的唯一问题是当调度计时器调用动画时,会引发错误。错误如下...

无法为“System.Windows.Media.MatrixTransform”上的“AngleX”属性设置动画,因为该对象已密封或冻结。

我将如何克服这个错误以便动画可以工作?

    public static void Grass(Canvas canvas, int boundry)
    {
        foreach (var element in canvas.Children.OfType<Image>())
        {
            if (element.Name == "GrassForeground" || element.Name == "GrassBackground")
            {
                var skewGrass = new DoubleAnimation
                {
                    From = 0,
                    To = 10,
                    EasingFunction = new BackEase(),
                    AutoReverse = true
                };
                var transform = (MatrixTransform)element.RenderTransform;
                transform.BeginAnimation(SkewTransform.AngleXProperty, skewGrass);
            }
        }
    }

【问题讨论】:

    标签: c# wpf exception animation


    【解决方案1】:

    试试下面这个,或者你有什么特殊的理由要使用 MatrixTransform?

    public static void Grass(Canvas canvas, int boundry)
    {
        foreach (var element in canvas.Children.OfType<Image>())
        {
            if (element.Name == "GrassForeground" || element.Name == "GrassBackground")
            {
                var skewGrass = new DoubleAnimation
                {
                    Duration = new Duration(TimeSpan.FromSeconds(5)),
                    From = 0,
                    To = 10,
                    EasingFunction = new BackEase(),
                    AutoReverse = true
                };
                element.RenderTransform = new SkewTransform();
                element.RenderTransform.BeginAnimation(SkewTransform.AngleXProperty, skewGrass);
            }
        }
    }
    

    【讨论】:

    • 谢谢好心的先生,终于让这个流血的动画工作了!
    • @nblackburn 这正是我对your previous question的回答。
    • 我做了一些调整,让它能很好地播放,这是我以前不知道的。
    【解决方案2】:

    您的element 已经分配了RenderTransform 属性,但该对象是冻结 SkewTransform 对象。你不能改变它的 AngleX 属性,因为它已经被渲染了。

    如果您将 RenderTransform 属性分配给 new SkewTransform(),则此 SkewTransform 将不会被冻结并且可以设置动画。

    虽然 Freezable 类有很多应用程序,但大多数 Freezable Windows Presentation Foundation (WPF) 中的对象与 图形子系统。

    这里有一个完整的解释:Freezable Objects Overview on MSDN

    【讨论】:

      猜你喜欢
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多