Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言完全编程地创建故事板#_C#_Animation_Storyboard_Blend - Fatal编程技术网

C# 用C语言完全编程地创建故事板#

C# 用C语言完全编程地创建故事板#,c#,animation,storyboard,blend,C#,Animation,Storyboard,Blend,我试图完全用C#创建一个故事板,根本没有XAML,但我在(SetTarget和SetTargetProperty)方面遇到了问题。。这是我的密码 当用户导航到我的UserControl时,我正在设置它的动画, 它在0.5秒内从0不透明度变为100,从900 X变为0 我真的非常感谢任何人帮助我设置这两个参数,因为我整天都在这么做,运气不好 public void Designer() { Control_ = new UserControl();

我试图完全用C#创建一个故事板,根本没有XAML,但我在(SetTarget和SetTargetProperty)方面遇到了问题。。这是我的密码

当用户导航到我的UserControl时,我正在设置它的动画, 它在0.5秒内从0不透明度变为100,从900 X变为0

我真的非常感谢任何人帮助我设置这两个参数,因为我整天都在这么做,运气不好

    public void Designer()
    {
        Control_ = new UserControl();

        Control_.HorizontalAlignment = HorizontalAlignment.Stretch;
        Control_.VerticalAlignment = VerticalAlignment.Stretch;

        Control_.Name = "Control_";
        this.AddChild(Control_);

        CreateStoryboard();
    }

    public void CreateStoryboard()
    {
        fadeinBoard = new Storyboard();
        Duration duration = new Duration(TimeSpan.FromMilliseconds(5));
        fadeinBoard.Duration = duration;

        DoubleAnimationUsingKeyFrames animOpacity = new DoubleAnimationUsingKeyFrames();
        DoubleAnimationUsingKeyFrames animTransform = new DoubleAnimationUsingKeyFrames();

        animOpacity.Duration = duration;
        animTransform.Duration = duration;

        //Transform Function
        KeyTime ktime1 = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(.5));
        PowerEase pow = new PowerEase();
        pow.Power = 5;
        pow.EasingMode = EasingMode.EaseOut;
        EasingDoubleKeyFrame keyFrame1 = new EasingDoubleKeyFrame(0, ktime1, pow);

        //Opacity Function
        KeyTime ktime2 = KeyTime.FromTimeSpan(TimeSpan.FromSeconds(.5));
        ExponentialEase expo = new ExponentialEase();
        expo.Exponent = 3;
        expo.EasingMode = EasingMode.EaseOut;
        EasingDoubleKeyFrame keyFrame2 = new EasingDoubleKeyFrame(1, ktime2, expo);

        animOpacity.KeyFrames.Add(keyFrame1);
        animTransform.KeyFrames.Add(keyFrame2);

        // MY PROBLEM IS HERE
        Storyboard.SetTarget(???, ???);
        Storyboard.SetTarget(???, ???);
        Storyboard.SetTargetProperty(???, ???);
        Storyboard.SetTargetProperty(???, ???)));

        fadeinBoard.Children.Add(animOpacity);
        fadeinBoard.Children.Add(animTransform);

        Control_.Resources.Add("fader", fadeinBoard);
    }

这对我来说适用于以下方面:

    Storyboard.SetTarget(animOpacity, Control_);
    Storyboard.SetTarget(animTransform, Control_);
    Storyboard.SetTargetProperty(animOpacity, new PropertyPath("Opacity"));
    Storyboard.SetTargetProperty(animTransform, new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"));
请注意从OpacityProperty到Opacity的更正,以及完全限定的属性语法-我已经将其配置为在ScaleY上工作

但是,只有在向控件添加了可使用提供的路径访问的RenderTransform时,这才起作用,例如,如下所示:

    ScaleTransform myScaleTransform = new ScaleTransform();
    myScaleTransform.ScaleY = 1;
    myScaleTransform.ScaleX = 1;
    TransformGroup myTransformGroup = new TransformGroup();
    myTransformGroup.Children.Add(myScaleTransform);
    Control_.RenderTransform = myTransformGroup;  

应该是://我的问题就在这里Storyboard.SetTarget(animpacity,Control);故事板.SetTarget(动画转换、控制);Storyboard.SetTargetProperty(animOpacity,新属性路径(“OpacityProperty”));Storyboard.SetTargetProperty(animTransform,新的PropertyPath((“RenderTransform.Children[0].TransformX”))@本·杰克逊既不工作,也不工作,不管引用与否,我总是在这一部分中遇到例外。我只是不知道如何设置那个值@BenJackson我修改了我的问题,希望这能让事情变得更清楚,对不起,这能解决你的问题吗@RosdiKasim感谢rosdi的帮助,但是提供的代码是XAML,我希望用C#BenJackson来做这件事实际上帮助解决了我的问题,现在它工作得很好。如果没有问题作者提供的好消息,就不可能确定代码中的所有错误。然而,在我看来,上面的内容似乎解决了最突出的问题:作为
SetTargetProperty()
方法调用的
DependencyObject
参数传递的值错误。FWIW:我倾向于将实际的
DependencyProperty
值传递给
PropertyPath
构造函数。这样代码中的“魔法文字”就更少了。例如,
Storyboard.SetTargetProperty(控件、新属性路径(UIElement.OpacityProperty))非常感谢@BenJackson,它帮了很多忙,就像你发布的一样,现在我只想知道如何定位Translate属性。但故事板最终还是被设计出来了animating@PeterDuniho很抱歉,这个问题不够清楚,我将在将来尝试提供更多细节。谢谢你的帮助