歪斜的动画无法动画 [英] skew animation unable to animate

查看:208
本文介绍了歪斜的动画无法动画的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在我的翻译歪斜动画双动画类取得了进展。唯一剩下的问题是,当动画被派遣计时器调用,将引发错误。该错误是如下...


  

不能在'System.Windows.Media.MatrixTransform',因为对象是密封或冻结动画的AngleX'属性。


我将如何克服这一错误,以便动画可以正常工作?

 公共静态无效草(帆布油画,诠释疆)
    {
        的foreach()(在canvas.Children.OfType&LT VAR元素;图片&GT)
        {
            如果(element.Name ==GrassForeground|| element.Name ==GrassBackground)
            {
                VAR skewGrass =新DoubleAnimation是
                {
                    从= 0,
                    为了= 10,
                    的easingFunction =新BackEase()
                    自动翻转=真
                };
                VAR变换=(Matr​​ixTransform)element.RenderTransform;
                transform.BeginAnimation(SkewTransform.AngleXProperty,skewGrass);
            }
        }
    }


解决方案

试试这个下面,或者你有一个特别的理由使用MatrixTransform?

 公共静态无效草(帆布油画,诠释疆)
{
    的foreach()(在canvas.Children.OfType&LT VAR元素;图片&GT)
    {
        如果(element.Name ==GrassForeground|| element.Name ==GrassBackground)
        {
            VAR skewGrass =新DoubleAnimation是
            {
                持续时间=新的持续时间(TimeSpan.FromSeconds(5)),
                从= 0,
                为了= 10,
                的easingFunction =新BackEase()
                自动翻转=真
            };
            element.RenderTransform =新SkewTransform();
            element.RenderTransform.BeginAnimation(SkewTransform.AngleXProperty,skewGrass);
        }
    }
}

I have made progress on translating my skew animation to the double animation class. The only problem left is when the animation is called by the dispatch timer, an error is thrown. The error is as follows...

Cannot animate the 'AngleX' property on 'System.Windows.Media.MatrixTransform' because the object is sealed or frozen.

How would i overcome this error so that the animation can work?

    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);
            }
        }
    }

解决方案

Try this below, or do you have a special reason to use 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);
        }
    }
}

这篇关于歪斜的动画无法动画的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆