gpt4 book ai didi

c# - 以编程方式创建缓动函数 C#

转载 作者:行者123 更新时间:2023-11-30 21:13:10 25 4
gpt4 key购买 nike

我正在学习如何使用 C# 创建动画。因此,如果我正在为一个对象的边距设置动画,那么我将使用以下方法为其边距设置动画:

test(someObject, FrameworkElement.MarginProperty);

/// <summary>
/// animate margin of an object
/// </summary>
/// <param name="target">what object do you whant to animate?</param>
/// <param name="property">what property do you want to animate</param>
public void test(DependencyObject target, DependencyProperty property)
{
ThicknessAnimation animation = new ThicknessAnimation();
animation.To = new Thickness(0,0,0,0); // final value

//animation.From = new Thickness(50,50,50,50);

//make animation last 5 seconds
animation.BeginTime = TimeSpan.FromSeconds(0);
animation.Duration = TimeSpan.FromSeconds(5);

// set the ease function
BounceEase b = new BounceEase();
animation.EasingFunction = b;

//note that I would like to add an easeIn function

//start animating
Storyboard.SetTarget(animation, target); // what object will be animated?
Storyboard.SetTargetProperty(animation, new PropertyPath(property)); // what property will be animated
Storyboard sb = new Storyboard();
sb.Children.Add(animation);
sb.Begin();
}

请注意,我能够创建一个缓动函数。但是如果我想创建一个 EaseInOut 缓动函数怎么办。我必须向我的测试方法添加什么才能使用 EaseInOut 方法为对象设置动画。

最佳答案

我想我终于让我的方法起作用了,以便为对象的边距设置动画。

MyStoryboards.Animations a = new MyStoryboards.Animations();

// set the ease function
BounceEase b = new BounceEase();
b.Bounces = 5;
b.Bounciness = 1;
b.EasingMode = EasingMode.EaseIn;

a.animThickness(tv, FrameworkElement.MarginProperty, tv.Margin, new Thickness(), TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(5), b);

...

...

public void animThickness(DependencyObject target, DependencyProperty property, Thickness from, Thickness to, TimeSpan beginTime, TimeSpan duration , IEasingFunction e)
{
ThicknessAnimation animation = new ThicknessAnimation();
animation.To = to; // final value

animation.From = from;

animation.BeginTime = beginTime;
animation.Duration = duration;

animation.EasingFunction = e;

//start animating
Storyboard.SetTarget(animation, target); // what object will be animated?
Storyboard.SetTargetProperty(animation, new PropertyPath(property)); // what property will be animated
Storyboard sb = new Storyboard();
sb.Children.Add(animation);
sb.Begin();
}

关于c# - 以编程方式创建缓动函数 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6988398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com